ERROR in xxx from UglifyJs RangeError: Maximum call stack size exceeded
阅读 (1677) 2020-05-16 16:01:59
之前npm run build打包项目都是正常的,今天打包一直报ERROR in xxx from UglifyJs RangeError: Maximum call stack size exceeded错误,版本回退到之前正常时的版本,依然报错.
Version:
webpack: 4.43.0
uglifyjs-webpack-plugin: ^2.1.2
尝试过以下方案:
1. uglifyjs-webpack-plugin 升版至2.2 (无效)
2. 文件中使用了Math.pow, 换一种写法 (无效)
3. 删除可能出现问题的文件 (无效)
4. 移除node_modules, 重新 sudo cnpm install (无效)
5. 项目整个重新克隆,并重新安装 sudo cnpm install (无效)
另外遇到个奇怪的现象,mode = 'development' 时,打正式包就没报错,但设置为production就报溢出了
我还有另一个dev环境的打包配置,跟正式包只是mode和路径不同,dev环境打包却正常的
最终解决方案:
webpack.prod.conf.js 配置中 使用 terser-webpack-plugin 替代 uglifyjs-webpack-plugin
还有一个UglifyJs打包时报错“UglifyJs Unexpected token: name «Dom7», expected: punc «;»”,也可以通过换插件的方式解决
新的配置:
optimization: {
minimize: true,
minimizer: [new TerserPlugin({
parallel: 4, // 并行打包
terserOptions: {
ecma: undefined,
warnings: false,
parse: {},
compress: {
drop_debugger: false, // 除了这两句是我加的,基他都是默认配置
drop_console: true
},
mangle: true, // Note `mangle.properties` is `false` by default.
module: false,
output: null,
toplevel: false,
nameCache: null,
ie8: false,
keep_classnames: undefined,
keep_fnames: false,
safari10: false,
}
})],
......
}
更新于:2020-05-18 17:14:00