在使用browserify时需要返回空对象
我有一个非常简单的模块,与Browserify捆绑在一起。 我想在浏览器和节点中都使用这个包。 在节点中,如果我require
非捆绑模块,它工作得很好; 不过,如果我require
browserified bundle, require
返回一个空对象。 这是一个复制:
简单的模块
function Foo(bar) {
this.bar = bar;
}
module.exports = Foo;
测试脚本
var Foo = require("./foo"); // not bundled with Browserify
var Foob = require("./foob"); // bundled with Browserify
console.log("Foo =", Foo);
console.log("Foob =", Foob);
如此执行
browserify foo.js -o foob.js
node foo-test.js
产量
Foo = function Foo(bar) {
this.bar = bar;
}
Foob = {}
你可以看到Foo
(非捆绑版本)是预期的功能,但Foob
(捆绑版本)是一个悲伤而空洞的对象。
所以问题是为什么browserified模块不能在node中工作?
澄清:我使用browserify捆绑我的webapp,并使用其路径选项来简化我的应用程序require语句中的路径,并避免相对路径地狱。 但是,我试图用tap来做单元测试,但它似乎没有类似的配置功能。 正因为如此,在使用tap时试图要求非捆绑文件会导致所有内容都被破坏。
我找到了解决办法。 解决方案是在捆绑时使用--standalone
的--standalone
选项。 这将在捆绑的输出中添加必要的module.exports语句。
你想嵌套browserify包。 在这种情况下,请确保您的嵌套bundle实际上已经定义了module.exports
。
例如在foob.js
包的主文件中,确保返回一个可以在外部使用的函数(使用module.exports
)
上一篇: require returns empty object when using browserify
下一篇: Browserify working in some folders in windows, but not others