webpackでTop-Level Awaitを使用して、一番上位でもawaitを使えるようにする方法

いままで非同期処理をするときにawaitを使用したい場合、async内でしか使えませんでした。
そのため、awaitを速実行したい場合はasyncの無名関数を作ってその中で実行していました。
(async() => {
// ここでawaitを使用する
})();
// 関数外だと、awaitは使えないしかし、Top-Level Awaitはその名前の通り、一番上位に限りawaitが使えるようになります(関数内の場合はasyncを付けていないと実行できません)。
webpackを使った環境で、このTop-Level Awaitを有効化する必要が出てきたので、方法を備忘録として残しておきます。
webpack.config.jsへの記述
「webpack.config.js」ファイル内にTop-Level Awaitを有効化する記述を追加します。
module.exports = {
module: {
rules: [
{
// 省略
},
],
},
experiments: {
topLevelAwait: true,
},
plugins: [],
};対象となる記述は「experiments」内に「topLevelAwait」を追加して、trueにすると有効化されます。
experiments: {
topLevelAwait: true,
},webpack.mix.js
Laravel Mixを使っている場合は、設定ファイルが「webpack.mix.js」になります。
その場合も同じように「experiments」内に「topLevelAwait」を追加すれば反映されます。
mix.webpackConfig({
resolve: {
alias: {
'@': __dirname + '/resources/js/src'
}
},
experiments: {
topLevelAwait: true,
},
});有効化せずに使った場合のエラー表示
もし、Top-Level Awaitを有効化せずに使った場合は下記のようなエラーが表示されます。
Module parse failed: The top-level-await experiment is not enabled (set experiments.topLevelAwait: true to enabled it)有効化したにもかかわらず、このエラーメッセージが表示される場合は、設定方法を間違えているので対象のファイルを確認しましょう。

Dart Sassでファイルを分割して管理する方法|Dart Sass入門
SafariでFacebookのPage Pluginに「リクエストを処理できませんでした」とダイアログが表示される問題
Nuxt.jsで「Classic mode for store/ is deprecated and will be removed in Nuxt 3.」のエラーメッセージが表示される場合の対処法
MacでCLIツールをインストールするときに行うターミナルでの「パスを通す」とは一体なにか?
「Dart Sass」「LibSass」「Ruby Sass」などSassの種類や記法に関するまとめ
.htaccessを使って、httpからhttpsへリダイレクトする設定方法
WordPressのContact Form 7で送信時に回転アイコンが出たまま止まってしまうときのチェックリスト
Vue CLIのプロジェクト管理用のGUI機能から環境を構築する
gulp 4.0から新しく加わったseriesとparallelについての備忘録
Backlogで2段階認証を設定後、SourceTreeでアカウントエラーが発生する場合の対処法
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Obsidianを使った「自己流PKM」で行う知識トレーニング
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」