Webpack5 process is not defined

webpack5升级后,出现了一个错误导致process没有定义,那如何解决这个问题呢?

看一下官网怎么说的

详情查看官方文档:

解决方案:

查了下官网

webpack 5 不再自动 polyfill Node.js 的核心模块,这意味着如果你在浏览器或类似的环境中运行的代码中使用它们,你必须从 NPM 中安装兼容的模块,并自己包含它们。以下是 webpack 在 webpack 5 之前使用过的 polyfill 包列表:

module.exports = {
  //...
  resolve: {
    fallback: {
      assert: require.resolve(assert),
      buffer: require.resolve(buffer),
      console: require.resolve(console-browserify),
      constants: require.resolve(constants-browserify),
      crypto: require.resolve(crypto-browserify),
      domain: require.resolve(domain-browser),
      events: require.resolve(events),
      http: require.resolve(stream-http),
      https: require.resolve(https-browserify),
      os: require.resolve(os-browserify/browser),
      path: require.resolve(path-browserify),
      punycode: require.resolve(punycode),
      process: require.resolve(process/browser),
      querystring: require.resolve(querystring-es3),
      stream: require.resolve(stream-browserify),
      string_decoder: require.resolve(string_decoder),
      sys: require.resolve(util),
      timers: require.resolve(timers-browserify),
      tty: require.resolve(tty-browserify),
      url: require.resolve(url),
      util: require.resolve(util),
      vm: require.resolve(vm-browserify),
      zlib: require.resolve(browserify-zlib),
    },
  },
};

1. 首先引入process,使用process/browser

npm i -D process

按照这个这个设置区设发现没有效果

2. 然后按如下设置,这个设置会自动加载模块,而不必在任何地方导入

new webpack.ProvidePlugin({
      process: process/browser
}),

可能有些按照上面设置发现没有成功,换成如下代码

new webpack.ProvidePlugin({
      process: require.resolve(process/browser)
}),

然后就成功的使用process了

经验分享 程序员 微信小程序 职场和发展