node.js包括类文件

时间:2013-10-19 19:23:39

标签: javascript node.js include

我有2个文件:

start.js

    var ConversationModule = require('./src/classes/conversation/Conversation.js');
    ConversationModule.sayhello();

conversation.js

    var ConversationModule = new Object();

    ConversationModule.sayhello = function () {
    console.log("hello");
    };

    exports.ConversationModule = ConversationModule();

在start.js中我无法调用sayhello()方法。我收到以下错误

TypeError: object is not a function

我只是不明白为什么它不起作用 - 我是节点的新手:)

3 个答案:

答案 0 :(得分:11)

您正尝试将ConversationModule导出为函数,而不是。请改用:

exports.ConversationModule = ConversationModule;

由于您还要将变量指定为exports的属性,因此您必须将其称为:

var ConversationModule = require('./file').ConversationModule;
ConversationModule.sayhello();

如果您不想这样做,请将对象指定给module.exports

module.exports = ConversationModule;

并称之为:

var ConversationModule = require('./file');
ConversationModule.sayhello();

答案 1 :(得分:0)

鉴于您已将文件命名为conversation.js,您可能只打算在该特定文件中定义“对话模块”。 (每个逻辑模块一个文件是一个好习惯) 在这种情况下,更改导出代码会更加清晰,并保留您原来的需求代码。

start.js

var ConversationModule = require('./src/classes/conversation/Conversation.js');
    ConversationModule.sayhello();

conversation.js

   var ConversationModule = new Object();

   ConversationModule.sayhello = function () {
     console.log("hello");
   };

   module.exports = ConversationModule;

当您需要具有module.exports的模块时,为require分配内容可使此值可用。

答案 2 :(得分:0)

conversation.js:

var conversationModule = new Object();

conversationModule.sayhello = function () {
console.log("hello");
};

exports.conversationModule = conversationModule;

start.js:

var conversationModule =  require('./src/classes/conversation/Conversation.js').conversationModule;
conversationModule.sayhello();