2012-03-16 58 views
2

下面是我正在做的一個簡化代碼示例。無法在Firefox插件SDK中使用require()導入自定義模塊

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()函數的格式,而且它們都不能做任何事情。

謝謝!

回答

5

require()函數的結果本質上是模塊的exports變量 - 並且您沒有定義exports.bar。因此,無論你叫你的main.jsfoo.foo.bar()或導入模塊略有不同:

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

這是一樣的:

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

而且,erikvold音符在他的回答,你並沒有真的定義exports.foo.bar

+0

謝謝,這是做到了。 – MikeASchneider 2012-03-19 14:20:24

2

嘗試:

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

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

你的榜樣將不會在任何情況下工作。