无法在Firefox Add-on SDK中导入带有require()的自定义模块

时间:2012-03-16 21:02:34

标签: javascript firefox firefox-addon firefox-addon-sdk

这是我正在做的简化代码示例。

foo.js(在lib目录中):

exports.foo = function foo() {
    this.bar = function() {
        console.log("foobar!");
    };
};

main.js:

var foo = require("foo");
exports.main = function(options, callbacks) {
    foo.bar();
}

CMD:

>cfx run
[...]
error: An exception occurred.
[...]
TypeError: foo.bar is not a function

所以基本上,我似乎无法对我导入的模块做任何事情。我在这里做错了吗?我尝试用几种不同的方式格式化foo()函数,但它们似乎都没有做任何事情。

谢谢!

2 个答案:

答案 0 :(得分:5)

require()函数的结果实际上是模块的exports变量 - 而您没有定义exports.bar。因此,要么在foo.foo.bar()中致电main.js,要么稍微不同地导入模块:

var {foo} = require("foo");

这与:

相同
var foo = require("foo").foo;

另外,正如erikvold在回答中指出的那样,你并没有真正定义exports.foo.bar

答案 1 :(得分:2)

尝试:

var foo = exports.foo = function foo() {
};

foo.bar = function() {
    console.log("foobar!");
};

您的示例在任何情况下都不起作用。