使用" externals"在浏览器控制台中出错用于排除node_modules

时间:2016-09-04 07:02:15

标签: reactjs webpack node-modules

我正在参与反应项目。在我使用" 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()
    ]
};

当我运行我的应用程序时,我在控制台中收到此错误

Browser Console

我该如何解决这个错误?

1 个答案:

答案 0 :(得分:0)

我认为webpack-node-externals node_modules中的行是:

  

与Webpack捆绑后端时

此库意味着用于在浏览器中运行的捆绑包。仅在节点上运行后端捆绑包。

在您的加载器中排除{{1}}应足以排除未引用的node_modules。否则,您需要引用的node_modules包含在包中。

对于浏览器,您只想排除页面上已存在的模块。例如,如果您从cdn中提取反应,这可能很有用。并且您不希望在应用程序包中包含所有react.js。