从 v4 替换 Webpack v5 中进程的 polyfill

Iwa*_*rjo 6 webpack

从 v4 迁移后,我在 Webpack v5 中收到以下错误。我能够正确编译我的构建,但出现性能问题。

Uncaught ReferenceError: process is not defined
Run Code Online (Sandbox Code Playgroud)

检查文档后,建议:

  • webpack 5 不再包含此 Node.js 变量的 polyfill。避免在前端代码中使用它。
  • 想要支持前端和浏览器的使用?使用导出或导入 package.json 字段以根据环境使用不同的代码。
    • 还使用浏览器字段来支持旧的捆绑程序。
    • 替代方案:使用 typeof 进程检查包装代码块。请注意,这将对捆绑包大小产生负面影响。

我希望支持前端和浏览器的使用。“使用导出或导入package.json字段根据环境使用不同的代码”是什么意思?

小智 4

我认为他们的意思是使用 package.json 中的导出和导入字段 - https://nodejs.org/api/packages.html#packages_exports。不过,我也在努力解决这个问题。

就我而言,我可以Uncaught ReferenceError: process is not defined通过在 webpack.config.js 文件中添加以下部分来解决该错误plugins

 new webpack.DefinePlugin({
    'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
    'process.env.NODE_DEBUG': JSON.stringify(process.env.NODE_DEBUG),
    'process.type': JSON.stringify(process.type),
    'process.version': JSON.stringify(process.version),
  })
Run Code Online (Sandbox Code Playgroud)

当然,还要const webpack = require('webpack');在文件的最顶部导入 webpack: 。

希望这可以帮助