在使用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

链接地址: http://www.djcxy.com/p/32889.html

上一篇: require returns empty object when using browserify

下一篇: Browserify working in some folders in windows, but not others