2012-01-26 90 views
9

我是Nodes.js noob,我試圖讓我的頭繞着模塊構造。因此到目前爲止,我有一個模塊(testMod.js)定義此類結構:模塊導出類Nodes.js

var testModule = { 
    input : "", 
    testFunc : function() { 
     return "You said: " + input; 
    } 
} 

exports.test = testModule; 

我試圖調用testFunc()方法正是如此:

var test = require("testMod"); 
test.input = "Hello World"; 
console.log(test.testFunc); 

但我得到一個類型錯誤:

TypeError: Object #<Object> has no method 'test' 

我做錯了什麼?

回答

11

這是一個命名空間問題。現在:

var test = require("testMod"); // returns module.exports 
test.input = "Hello World"; // sets module.exports.input 
console.log(test.testFunc); // error, there is no module.exports.testFunc 

你可以這樣做:

var test = require("testMod"); // returns module.exports 
test.test.input = "Hello World"; // sets module.exports.test.input 
console.log(test.test.testFunc); // returns function(){ return etc... } 

或者,而不是exports.test你可以做module.exports = testModule,則:

var test = require("testMod"); // returns module.exports (which is the Object testModule) 
test.input = "Hello World"; // sets module.exports.input 
console.log(test.testFunc); // returns function(){ return etc... } 
+0

真棒謝謝。 – travega