Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】SyntaxError: await is only valid in async functions, async generators and modulesエラーの使い方

SyntaxError: await is only valid in async functions, async generators and modulesエラーの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

SyntaxError: await is only valid in async functions, async generators and modulesオブジェクトは、JavaScriptの文法エラーの一種です。このエラーは、awaitキーワードが、その使用が許可されていないコンテキスト(文脈)で使用された場合に発生します。

awaitキーワードは、JavaScriptで非同期処理の完了を「待つ」ために使用される特別なキーワードです。しかし、この「待つ」という動作は、コードの実行を一時停止させるため、常に非同期の環境下でのみ許可されています。具体的には、asyncキーワードで宣言された非同期関数(async function)、非同期ジェネレーター関数(async generator function)、またはECMAScriptモジュール(ES Modules)のトップレベルスコープ内でのみawaitを使用することができます。

例えば、通常の同期関数や、スクリプトファイルの最も外側のスコープ(トップレベル)でawaitを直接使用しようとすると、このSyntaxErrorが発生します。

このエラーを解決するためには、awaitを使用したいコードが、適切なasync関数内にあるか、またはESモジュールのトップレベルで実行されていることを確認してください。もしawaitを使用したい場合、そのコードをasync functionで囲むか、ファイルをESモジュールとして設定することで問題を解決できます。

構文(syntax)

1function fetchData() {
2  const data = await Promise.resolve('Hello, JavaScript!');
3  console.log(data);
4}

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語