我正在学习React,我试图将它与Webpack一起使用,但我遇到了以下问题:
如果我使用此webpack配置,节点模块不会被排除,捆绑过程需要20秒,捆绑包的大小超过2MB(参见下面的CLI输出):
...
target: 'node', // important in order not to bundle built-in modules like path, fs, etc.
externals: [nodeExternals()]
...
但是,如果我将以下两行添加到我的配置并使用nodeExternals,则捆绑包会变小并且运行得很快,尽管它不起作用,因为在浏览器中我收到错误' Uncaught ReferenceError:require未定义' :
...
exclude: /(node_modules|bower_components)/,
...
...
{ test: /\.js?$/,
include: [
path.resolve(__dirname, './src'),
],
loader: 'babel-loader?cacheDirectory',
},
...
我在这里缺少什么?我想浏览器会抛出这个错误,因为在我排除node_modules之后,在客户端不再存在反应,但是我认为不应该捆绑node_modules。 请在这里找到我的小项目的回购问题: https://github.com/sznrbrt/messageboard-react
SOLUTION:
两种不同的方法是使用/ node_modules / 的正则表达式为加载器传递排除或包含选项
class Foo{
}
class Bar{
public:
using meth = Foo* (*)(int a, std::string b);
}
答案 0 :(得分:7)
答案是在exclude: /node_modules/
内添加module.loaders
字段。
添加目标:'node'表示将此代码打包在node.js环境中运行,其中包含节点特定的全局变量,如require
。这就是它无法在浏览器中运行的原因。