📝

Webpack5ではprocessはundefinedになる

2022/02/13に公開

概要

久々にwebpackをinstallして使ったところ環境変数を読み込む時にエラーになったのでメモ
Uncaught ReferenceError: process is not defined

原因

webpack5ではNode.jsのpolyfillの自動挿入が廃止になった

https://github.com/webpack/changelog-v5#automatic-nodejs-polyfills-removed

廃止されたpolyfillは下記で一覧できる
https://github.com/webpack/node-libs-browser#node-libs-browser

対応

processのpolyfill
https://www.npmjs.com/package/process

ProvidePluginを使うとimportなしでglobalに使える

module.exports = {
  ...
  plugins: [
      new webpack.ProvidePlugin({
             process: 'process/browser',
      }),
  ],
}

https://webpack.js.org/plugins/provide-plugin/


今回はクライアント側のみのコードだったので、polyfillを入れずに webpack.DefinePlugin で対応しました

https://webpack.js.org/plugins/define-plugin/

参考

v4からv5への公式移行ガイドに注意が書いてました…
https://webpack.js.org/migrate/5/#test-webpack-5-compatibility
https://webpack.js.org/migrate/5/#run-a-single-build-and-follow-advice

日本語で解説されている webpack4 -> webpack5 の変更点まとめ記事🙏
https://blog.hiroppy.me/entry/webpack5#Nodejsのpolyfillの自動挿入が廃止

Discussion