我是Nodes.js noob,我正试图了解模块结构。到目前为止,我有一个模块(testMod.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:
TypeError: Object #<Object> has no method 'test'
我做错了什么?
答案 0 :(得分: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... }