使用UglifyJS插件进行Webpack优化会导致运行时错误

dun*_*all 37 javascript uglifyjs reactjs webpack

我有一个通过webpack捆绑的同构React应用程序.

我有2个入口点对应2个捆绑文件输出:vendors.jsapp.js.

当运行webpack-dev-server或没有任何优化标志进行编译时,一切正常.但是,只要我尝试使用Uglify插件,编译后的输出就会包含错误.

我试过了:

vendors.js
app.js

或者在配置中:

vendors.js

但都会导致相同的运行时错误(未定义的变量).

有什么明显可能导致这种情况吗?Uglify是否过度热心并且删除了不应该的东西?

dun*_*all 68

问题是由Uglify管道造成的.在不知道哪个变量重命名导致问题的情况下,解决方案是完全关闭重整:

new webpack.optimize.UglifyJsPlugin({
  sourceMap: false,
  mangle: false
})
Run Code Online (Sandbox Code Playgroud)

这应该作为Webpack插件添加到您的配置文件中,例如:

var config = {

  //... various config settings

  plugins: [
    new webpack.optimize.UglifyJsPlugin({
      sourceMap: false,
      mangle: false
    })
  ]
};
Run Code Online (Sandbox Code Playgroud)

  • 关闭芒果正在击败uglifier.这不是一个真正的解决方案. (6认同)
  • 我正在对答案进行投票,但如果我们能够将其视为您正在使用的webpack JSON配置文件的一部分,那就更好了.我不知道在我自己的配置文件中将它放在哪里以使其正常工作. (5认同)
  • 谢谢,我添加了一个在配置文件中包含插件的示例. (5认同)
  • 我有同样的问题,但以某种方式关闭损坏没有帮助 (3认同)
  • 我也有同样的问题.关闭破损也没有帮助我.如何进一步调试?有任何想法吗? (2认同)
  • 正如@AjaxLeung所说,关闭整理使得Uglify毫无意义.您是否尝试过关闭一部分对象(例如导出)?请参阅Uglify文档:https://github.com/webpack-contrib/uglifyjs-webpack-plugin#mangling (2认同)
  • Uglify做了大量的事情,其中​​破坏占压缩增益的一小部分.对不同群体进行逐步禁用修改可能有助于找到一个特定的问题,但是说完全关闭修正使得Uglify"毫无意义"是不正确的. (2认同)