And*_*ena 7 javascript node.js npm reactjs webpack
我正在创建一个React Node.js应用程序,我正在尝试生成一个包含从NPM加载的React源代码的Webpack包.
但是,似乎NPM的React代码不能直接在客户端中使用.它会触发此错误:
Uncaught ReferenceError: development is not defined
Run Code Online (Sandbox Code Playgroud)
触发异常的代码来自React代码:

有什么我可以做的工作吗?
编辑
这是我的webpack.config.js:
import _ from 'lodash';
import webpack from 'webpack';
import yargs from 'yargs';
import ExtractTextPlugin from 'extract-text-webpack-plugin';
export default {
entry: {
bundle: './src/client.js'
},
output: {
filename: '[name].js',
path: './dist/assets',
publicPath: '/assets/'
},
externals: undefined,
resolve: {
extensions: ['', '.js', '.json']
},
module: {
loaders: [
{test: /\.js/, loader: 'babel?optional=es7.objectRestSpread!client', exclude: /node_modules/ },
{test: /\.css/, loader: ExtractTextPlugin.extract("style-loader", "css-loader")},
{test: /\.less$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader!less-loader")},
{test: /\.json$/, loader: 'json'},
{test: /\.jpe?g$|\.gif$|\.png$/, loader: 'file?name=[name].[ext]'},
{test: /\.eot$|\.ttf$|\.svg$|\.woff2?$/, loader: 'file?name=[name].[ext]'}
]
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': 'development'
},
'development': true
}),
new ExtractTextPlugin('[name].css')
]
};
Run Code Online (Sandbox Code Playgroud)
我的client.js文件只包含这一行(为了调试此问题):
import React from 'react';
Run Code Online (Sandbox Code Playgroud)
Mic*_*ley 19
传递给webpack.DefinePlugin字符串的任何值都被视为代码片段 - 也就是说,使用
new webpack.DefinePlugin({
ENV: "development"
});
Run Code Online (Sandbox Code Playgroud)
与代码
console.log(ENV);
Run Code Online (Sandbox Code Playgroud)
结果是
console.log(development);
Run Code Online (Sandbox Code Playgroud)
相反,你想要
new webpack.DefinePlugin({
ENV: "\"development\""
});
Run Code Online (Sandbox Code Playgroud)
这将导致
console.log("development");
Run Code Online (Sandbox Code Playgroud)
要解决您的问题,请将插件更改为
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': "'development'"
}
}),
new ExtractTextPlugin('[name].css')
]
Run Code Online (Sandbox Code Playgroud)
我通常允许webpack读取,process.env.NODE_ENV以便在运行webpack时React正确缩小NODE_ENV=production:
new webpack.DefinePlugin({
"process.env": { NODE_ENV: JSON.stringify(process.env.NODE_ENV || "development") }
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3023 次 |
| 最近记录: |