节点.js包含类文件

node.js include class file

本文关键字:文件 包含类 js 节点      更新时间:2023-09-26

我得到了 2 个文件:

开始.js

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

对话.js

    var ConversationModule = new Object();
    ConversationModule.sayhello = function () {
    console.log("hello");
    };
    exports.ConversationModule = ConversationModule();

在开始时.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();

鉴于您已经命名了文件对话.js,您可能打算在该特定文件中仅定义"对话模块"。(每个逻辑模块一个文件是一种很好的做法)在这种情况下,更改导出代码并保留原始代码会更干净。

开始.js

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

对话.js

   var ConversationModule = new Object();
   ConversationModule.sayhello = function () {
     console.log("hello");
   };
   module.exports = ConversationModule;

将某些内容分配给module.exports可在需要具有 require 的模块时使用此值可用。

对话.js:

var conversationModule = new Object();
conversationModule.sayhello = function () {
console.log("hello");
};
exports.conversationModule = conversationModule;

开始.js:

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