async/awaitを使用して、"regeneratorRuntime is not defined "エラーが出た時の対処


[email protected][email protected]環境下でasync/awaitを使用したところ"regeneratorRuntime is not defined"エラーがでました。その時の対処方法をメモします。

対処方法

@babel/polyfillをインストールして

npm install @babel/polyfill --save-dev

webpack.config.jsのentryを以下のように変更すればOKです。

webpack.config.js
 entry: ['@babel/polyfill', './src/index.js']

メモ

babel-loader 8 でasync/awaitを動作させるためには、@babel/polyfillが必要です。
bable-loader 7 では @babel/polyfillの代わりにbabel-polyfillが必要になります。

追記 (2019/07/30)

webpackを使用せず、bable-cli + .babelrcでbabelを使用している場合、@babel/preset-envのオプションでtargetsを指定することで対処できます。

.babelrc
{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": true
        }
      }
    ]
  ]
}

これにより現在のnode.jsのバージョンに対応した形でコンパイルされるため、async/awaitが使用可能になります。(詳しくはこちらを参照してください)