webpack5升级后,出现了一个错误导致process没有定义,那如何解决这个问题呢?
看一下官网怎么说的
详情查看官方文档: https://webpack.docschina.org/migrate/5/#preparations
解决方案:
查了下官网
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了