【发布时间】:2016-02-02 17:58:29
【问题描述】:
我有一个使用 nodeJS 模块格式 (commonJS) 的项目,也应该(部分)在浏览器中运行。
我确实有非同构的代码路径,我有条件地包含模块:
var impl;
try {
// in node, use node-impl
impl = require('../node-impl');
} catch (err) {
// running in browser, use browser-impl
impl = require('../browser-impl');
}
现在,我想使用webpack 创建一个在浏览器中运行的包。因此,我需要在webpack.config.js 中将外部(特定于nodeJS)模块定义为external,这样它们就不会被包含在包中:
external: {
'../node-impl': true
}
我验证了 '../node-impl' 代码实际上并未包含在 bundle 中,但发出的代码如下所示:
/***/ },
/* 33 */
/***/ function(module, exports) {
module.exports = ../node-impl;
/***/ },
这是语法错误的JS,浏览器会在那里抛出语法错误。
如何使用 webpack.js 正确处理这种情况?请注意,我不希望使用 webpack 来运行 nodeJS,只有浏览器包应该使用 webpack 创建。
【问题讨论】:
标签: javascript webpack commonjs isomorphic-javascript