node.js包含类文件
我有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;
既然你也将variables赋值为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
分配一些东西使得这个值可用。
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();