2
我受到這個警告好幾天,不知道爲什麼這個配置不起作用。我已經添加了DefinePlugin,但是,我仍然在收到「警告:看起來您正在使用React的開發版本的縮小副本」。如何避免反應縮小警告
有關這方面的任何線索?謝謝!
的package.json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"release":"NODE_ENV=production webpack",
},
"dependencies": {
"react": "~15.0.1",
"react-addons-css-transition-group": "~15.0.1",
"react-bootstrap": "^0.29.5",
"react-dom": "~15.0.1",
"react-select-box": "^3.0.1"
},
"devDependencies": {
"babel-core": "^6.4.5",
"babel-loader": "^6.2.1",
"babel-preset-es2015": "^6.3.13",
"babel-preset-react": "^6.3.13",
"uglify-js-plugin": "0.0.6",
"webpack": "^2.2.0"
}
}
webpack.config.js
var path = require('path');
var webpack = require('webpack');
module.exports = {
entry: {
Page: './page.js',
},
output: {
path: '/',
filename: '[name].js'
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
}
}),
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify('production')
}
})
],
module: {
loaders: [
{
test: /.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015', 'react']
}
}
]
}
};
從您的webpack配置中移除UglifyJsPlugin(用於調試)。 –
當我移除'UglifyJsPlugin'時,警告沒有記錄到控制檯。它看起來像'DefinePlugin'只選擇性地更新'process.env.NODE_ENV'的實例 - 即打印警告的方法內部的條件更新爲'if(false)',但反應代碼中的條件仍然表示'process .env.NODE_ENV!=='production''。看起來'UglifyJsPlugin'移除了'if(false)'塊內的代碼,但反應代碼不變,然後'process.env.NODE'在運行時未定義 – supamanda
僅限於'DefinePlugin':'var warning = emptyFunction ;如果(false){...'。使用'DefinePlugin'和'UglifyJsPlugin':'warning = emptyFunction;「production」!== process.env.NODE_ENV &&!function(){...'所以看起來好像'DefinePlugin'沒有運行或者運行'UglifyJsPlugin'之後...我嘗試在webpack配置中重新排序插件列表,並得到相同的結果 – supamanda