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

Webpack Uglify Plugin Causing String.split to malfunction in chrome 51 only

我发现一个非常奇怪的问题,我的应用程序的缩小过程导致了意外的副作用。

我唯一的 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] }

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

有人知道是什么原因造成的吗?谢谢。

这似乎是 reduce_vars 选项导致的错误。

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