Javascript node.js包含类文件

Javascript node.js包含类文件,javascript,node.js,include,Javascript,Node.js,Include,我有两个文件: start.js var ConversationModule = require('./src/classes/conversation/Conversation.js'); ConversationModule.sayhello(); var ConversationModule = require('./src/classes/conversation/Conversation.js'); ConversationModule.sayhello()

我有两个文件:

start.js

    var ConversationModule = require('./src/classes/conversation/Conversation.js');
    ConversationModule.sayhello();
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();
   var ConversationModule = new Object();

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

   module.exports = ConversationModule;
在start.js中,我无法调用sayhello()方法。我得到以下错误

TypeError: object is not a function

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

您正在尝试将
会话模块
导出为函数,但它不是。改用这个:

exports.ConversationModule = ConversationModule;
由于您还将变量指定为导出的属性,因此您必须这样调用它:

var ConversationModule = require('./file').ConversationModule;
ConversationModule.sayhello();
var ConversationModule = require('./file');
ConversationModule.sayhello();
如果不想这样做,请将对象指定给
模块。导出

module.exports = ConversationModule;
这样称呼它:

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

鉴于您已将文件命名为conversation.js,您可能打算在该特定文件中单独定义“conversation模块”。(每个逻辑模块一个文件是一种良好做法) 在这种情况下,更改导出代码并保持require代码原来的状态会更干净

start.js

    var ConversationModule = require('./src/classes/conversation/Conversation.js');
    ConversationModule.sayhello();
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();
   var ConversationModule = new Object();

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

   module.exports = ConversationModule;
将某些内容分配给
模块。导出
使此值在您需要带有
require

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();