ERROR in xxx from UglifyJs RangeError: Maximum call stack size exceeded

阅读 (31)
之前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

留言

发表评论

标记为*的字段是必填项(邮箱地址不会被公开), 由于国内舆论控制, 评论需要管理员审核通过方可展示

返回顶部