Node.js包含类文件

10

我有两个文件:

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() 方法。我收到以下错误。

In start.js I cannot call the sayhello() method. I get following error


TypeError: object is not a function

我就是不明白为什么它不起作用——我对 node 不熟悉 :)

3个回答

11
你正在尝试将ConversationModule导出为函数,但它不是函数。请使用以下内容替代:
exports.ConversationModule = ConversationModule;

由于您还将变量分配为 exports 的属性,因此您必须这样调用它:

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

如果您不想这样做,请将对象分配给module.exports:
module.exports = ConversationModule;

并像这样调用:

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

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

0

假设您将文件命名为conversation.js,那么您可能打算仅在该特定文件中定义“对话模块”。(每个逻辑模块一个文件是一个好的实践)在这种情况下,更清晰的做法是更改导出代码,并将您的require代码保留为最初的状态。

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要求该模块时,该值可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接