javascript - Webpack Uglify 插件导致 String.split 仅在 chrome 51 中出现故障

标签 javascript google-chrome webpack uglifyjs

screenshot of issue

我看到一个 super 奇怪的问题,我的应用程序的缩小过程导致了意想不到的副作用。

我唯一的 webpack 插件就是这两个。

  new webpack.DefinePlugin({
    'process.env': {
      NODE_ENV: '"production"'
    },
  }),
  new webpack.optimize.UglifyJsPlugin()

在最新版本的 chrome 中,如果我运行这段 js 'fooBar'.split(/(?=[A-Z])/) 结果是 ["foo", "Bar"],这是预期的。在其他页面的 chrome 51 中也能正常工作。

但是,在我的页面上,在 chrome 51 中,结果是 ["fooBar"]

如果我删除 uglifyjs 插件,它会再次开始工作。

我想这可能是我使用的工具特有的,而不一定是我的构建,但我拉下了 create-react-app 并且它也使用了 uglifyjs,但它在 chrome 51 中工作得很好。

我还尝试直接使用 uglify js 进行缩小,而不是使用插件,效果很好。我一直在查看 uglify 插件的代码,看看是否有什么问题突出,但没有任何问题。

我还在控制台中检查了该方法是否已被替换,但是当我说 str.split 时,它仍然返回 function split() { [native code] }

我一直在搜索我正在使用的库和我的代码,看看是否有任何东西看起来可以改变像这样的 native 方法的行为,但我真的没有看到任何东西。我尝试删除 babel-polyfill 和其他一些东西来看看它们是否导致了问题,但似乎没有什么区别。考虑到 split 方法仍然是 native 的,我仍然感到震惊的是,浏览器中发生的任何事情都可能对其行为产生影响。

有人知道可能会导致这种情况的原因吗?谢谢。

最佳答案

这似乎是由reduce_vars选项引起的一个bug uglify。

https://github.com/facebookincubator/create-react-app/issues/2199#issuecomment-302226607

关于javascript - Webpack Uglify 插件导致 String.split 仅在 chrome 51 中出现故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43927766/

相关文章:

javascript - 如何更改webpack中的请求路径

webpack - Vuetify 2.1 和 Webpack 的编译时间极长

javascript - Jest TypeError : Path must be a string. 收到未定义

javascript - km0ae9gr6m js注入(inject)破解信息

javascript - 是否可以使用网页作为用 python 编写的程序的用户界面,在本地运行,无需 Web 服务器?

javascript - 如何检查实际事件元素的类别

javascript - 在 ember 中具有不同状态的自定义按钮

html - Chrome 将空格添加到站点导航,但 Safari 没有

c# - 无法使用 Chrome 在命令行中截取屏幕截图

html - Chrome 修复了将鼠标悬停在链接上时 div 消失的问题