UglifyJS 似乎干扰了生产中使用的 React dist
UglifyJS seems to interfere with React dist used in production
这些是我的 Webpack 配置中似乎与我的问题相关的部分:
new webpack.EnvironmentPlugin(['NODE_ENV']),
// Minify the code.
new UglifyJSPlugin({
compress: {
dead_code: true,
drop_debugger: true,
warnings: false
},
output: {
comments: false
}
}),
我使用的是 CRA 配置的弹出版本,它看起来几乎相同,并从 build.js
获取其环境变量 - 请注意,我保留了此条件
if (env['process.env'].NODE_ENV !== '"production"') {
throw new Error('Production builds must have NODE_ENV=production.');
}
在我的生产 webpack 配置中,所以我怀疑问题是我没有正确传递我的环境变量。
有趣的是,我收到了这个 React 错误:
Warning: It looks like you're using a minified copy of the development build of React.
如果我删除与缩小相关的代码(整个 UglifyJSPlugin 块),生成的包显然更大,但 React 警告消失了。知道是什么原因造成的吗?
编辑:即使我使用 webpack-define-plugin 明确地将我的 NODE_ENV
设置为 production
这是 'process.env.NODE_ENV': JSON.stringify('production')
我仍然在使用 Uglify 时遇到此错误。
事实证明,React 包来自我在我的应用程序中使用的一个严重捆绑的库:在我的 uglify 选项中启用源映射让我很容易找到它。
这些是我的 Webpack 配置中似乎与我的问题相关的部分:
new webpack.EnvironmentPlugin(['NODE_ENV']),
// Minify the code.
new UglifyJSPlugin({
compress: {
dead_code: true,
drop_debugger: true,
warnings: false
},
output: {
comments: false
}
}),
我使用的是 CRA 配置的弹出版本,它看起来几乎相同,并从 build.js
获取其环境变量 - 请注意,我保留了此条件
if (env['process.env'].NODE_ENV !== '"production"') {
throw new Error('Production builds must have NODE_ENV=production.');
}
在我的生产 webpack 配置中,所以我怀疑问题是我没有正确传递我的环境变量。
有趣的是,我收到了这个 React 错误:
Warning: It looks like you're using a minified copy of the development build of React.
如果我删除与缩小相关的代码(整个 UglifyJSPlugin 块),生成的包显然更大,但 React 警告消失了。知道是什么原因造成的吗?
编辑:即使我使用 webpack-define-plugin 明确地将我的 NODE_ENV
设置为 production
这是 'process.env.NODE_ENV': JSON.stringify('production')
我仍然在使用 Uglify 时遇到此错误。
事实证明,React 包来自我在我的应用程序中使用的一个严重捆绑的库:在我的 uglify 选项中启用源映射让我很容易找到它。