やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

webpackでasyncを使うとregeneratorRuntime未定義エラーになった

 はぁ?  

背景

 webpackでビルドしたコードを実行すると、以下エラーが出た。

Uncaught ReferenceError: regeneratorRuntime is not defined

 regeneratorRuntimeってなんぞ?

ググった

 asyncを使うと出るエラーらしい。以下をインストール&設定すればいいようだ。

npm i @babel/runtime
npm i --save-dev @babel/plugin-transform-runtime

 まとめて入手する。

npm i -D webpack webpack-cli webpack-dev-server babel-loader @babel/core @babel/preset-env @babel/plugin-proposal-class-properties @babel/plugin-proposal-private-methods @babel/runtime @babel/plugin-transform-runtime

webpack.config.js

module.exports = {
  mode: "production",
  entry: "./src/DomMapper.js",
  output: {
    library: 'DomMapper',
    libraryExport: 'default',
    libraryTarget: 'umd',
    globalObject: 'this',
//    library: 'DomMapper',
//    libraryExport: 'default',
//    libraryTarget: 'var',
    filename: 'DomMapper.js',
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        use: [
          {
            loader: "babel-loader",
            options: {
              presets: [
                // ES2020 を ES5 に変換
                "@babel/preset-env",
              ],
              plugins: [
                // private # を使えるようにする
                "@babel/plugin-proposal-class-properties",
                "@babel/plugin-proposal-private-methods",
                // asyncを使えるようにする
                "@babel/plugin-transform-runtime",
              ],
            },
          },
        ],
      },
    ],
  },
  // ES5(IE11等)向け
  target: ["web", "es5"],
};

新たなエラーが出た

 たしかにさっきのエラーは消えた。が、新たなエラーが出た。

DomMapper.js:1 Uncaught TypeError: Cannot set property 'wrap' of undefined

所感

 いつ終わるんだろうね。もう嫌だ。

対象環境

$ uname -a
Linux raspberrypi 5.4.83-v7l+ #1379 SMP Mon Dec 14 13:11:54 GMT 2020 armv7l GNU/Linux