【发布时间】:2016-09-15 16:04:25
【问题描述】:
浏览器控制台警告:
bundle.js:1 警告:看起来您使用的是 React 的开发版本。在将 React 应用程序部署到生产环境时, 确保使用跳过开发警告的生产版本 而且速度更快。详情请见http://facebook.github.io/react/downloads.html。
来自 package.json 的脚本:
"scripts": {
"start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev",
"start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback",
"start:prod": "webpack && node server.js"
},
Git Bash 中的命令:
NODE_ENV=production npm start
如果我在server.js 中使用console.log(process.env.NODE_ENV),我会得到production。
- React 是通过 npm 安装的
- 最新版本:15.0.2
- 我使用 Webpack
UglifyJs插件
知道有什么问题吗?
来自第一个引用中的链接:
注意:默认情况下,React 将处于开发模式。在中使用 React 生产模式,设置环境变量 NODE_ENV 为生产 (使用 envify 或 webpack 的 DefinePlugin)。执行的缩小器 建议完全消除诸如 UglifyJS 之类的死代码 删除开发模式中存在的额外代码。
我错过了什么吗?我真的需要某种 3rd 方包或插件来设置变量吗?但它已经控制台日志显示它在生产环境中。对我来说似乎不合逻辑。
更新:当前的 webpack.config.js
var webpack = require('webpack')
module.exports = {
entry: './index.js',
output: {
path: 'public',
filename: 'bundle.js',
publicPath: '/'
},
plugins: process.env.NODE_ENV === 'production' ? [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin()
] : [],
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader?presets[]=es2015&presets[]=react'
}
]
}
}
【问题讨论】:
-
检查
webpack.DefinePlugin并在 webpack 配置中手动传递process.env。 -
我用我当前的 webpack 配置文件更新了我的问题。 @zerkms
-
"环境检查工作正常"---你检查服务器进程的环境,而反应在浏览器中工作。