SyntaxError: await is only valid in async functions
JavaScriptでasync関数外でawaitを使用した場合のエラー
概要
await is only valid in async functions は、await キーワードを async 関数の外で使用した場合に発生するエラーです。非同期処理を扱う際によく遭遇します。
エラーメッセージ
SyntaxError: await is only valid in async functions and the top level bodies of modules
SyntaxError: Unexpected reserved word 'await'
原因
1. 通常の関数でawaitを使用
| |
2. コールバック関数でawaitを使用
| |
3. アロー関数でasyncを忘れた
| |
解決策
1. 関数にasyncを追加
| |
2. コールバック関数にasyncを追加
| |
3. Promise.allで並列処理
| |
4. トップレベルawait(ESモジュール)
| |
5. 即時実行関数(IIFE)を使用
| |
よくあるパターン
クラスメソッド
| |
イベントハンドラ
| |
Reactコンポーネント
| |
Express.js ルート
| |
async/awaitとthen/catchの使い分け
| |
注意点
forEachでは完了を待てない
| |
関連エラー
関連エラー
JavaScript の他のエラー
この記事は役に立ちましたか?