繁体   English   中英

node.js包括类文件

[英]node.js include class file

我有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

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

您正在尝试将ConversationModule导出为函数,但实际上并非如此。 请改用:

exports.ConversationModule = ConversationModule;

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

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

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

module.exports = ConversationModule;

并称之为:

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

鉴于您已将文件命名为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;

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM