The JavaScript exception "await is only valid in async functions, async generators and modules" occurs when an await
expression is used outside of async functions or modules or other async contexts.
The JavaScript exception "await is only valid in async functions, async generators and modules" occurs when an await
expression is used outside of async functions or modules or other async contexts.
JavaScript execution is never blocking: an await
can never block the execution of the program. Instead, it pauses the execution of the surrounding async task, while allowing other tasks to continue running. Therefore, await
cannot be used in sync tasks, such as functions, generator functions, or top level of scripts. It is not always apparent whether the current file is a script or a module — see the Modules guide for more information.
You cannot use await
in a sync callback:
urls.forEach((url) => { await fetch(url); // SyntaxError: await is only valid in async functions, async generators and modules });
Instead, make the callback async. See more explanation in the Using promises guide.
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Bad_await