[英]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.