Модуль экспорта класса Nodes.js - PullRequest
9 голосов
/ 26 января 2012

Я - нуб Nodes.js и пытаюсь разобраться с конструкциями модулей.Пока у меня есть модуль (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'

Что, черт возьми, я делаю не так?

1 Ответ

11 голосов
/ 26 января 2012

Это проблема с пространством имен. Прямо сейчас:

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... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...