我正在参与反应项目。在我使用" exclude:/ node_modules"时,我的项目没有排除node_modules。所以我读了一些已解决的问题,并将下面的代码添加到我的webpack.config.js中。
var nodeExternals = require('webpack-node-externals');
...
module.exports = {
...
target: 'node', // in order to ignore built-in modules like path, fs, etc.
externals: [nodeExternals()], // in order to ignore all modules in node_modules folder
...
};
我的webpack.config.js看起来像这样
var path = require('path');
var webpack = require('webpack');
var nodeExternals = require('webpack-node-externals');
module.exports = {
devtool: 'eval',
entry: [
'webpack-dev-server/client?http://localhost:3000',
'webpack/hot/only-dev-server',
'./dev/js/index.js'
],
target: 'node', // in order to ignore built-in modules like path, fs, etc.
externals: [nodeExternals()], // in order to ignore all modules in node_modules
module: {
loaders: [
{
test: /\.js$/,
loaders: ['react-hot', 'babel'],
exclude: /node_modules/
},
{
test: /\.scss/,
loader: 'style-loader!css-loader!sass-loader'
}
]
},
output: {
path: path.join(__dirname, 'dist'),
filename: 'bundle.js',
publicPath: '/static/'
},
plugins: [
new webpack.HotModuleReplacementPlugin()
]
};
当我运行我的应用程序时,我在控制台中收到此错误
我该如何解决这个错误?
答案 0 :(得分:0)
我认为webpack-node-externals
node_modules
中的行是:
与Webpack捆绑后端时
此库不意味着用于在浏览器中运行的捆绑包。仅在节点上运行后端捆绑包。
在您的加载器中排除{{1}}应足以排除未引用的node_modules。否则,您需要引用的node_modules包含在包中。
对于浏览器,您只想排除页面上已存在的模块。例如,如果您从cdn中提取反应,这可能很有用。并且您不希望在应用程序包中包含所有react.js。