此代码告诉我解析函数不是函数:
const MyModule = require('./MyModule.js');
MyModule.parse('...');
在我的模块脚本中,它的定义如下:
MyModule = {};
MyModule.parse = function(data){
};
module.exports.MyModule = MyModule;
我做错了什么?
答案 0 :(得分:1)
您必须了解您不是使用名为MyModule的成员导出MyModule而是导出对象(module.exports确切)(这是您为其分配的)。
如果在您的代码中需要MyModule,则console.log是您需要的结果,它将如下所示:
{ MyModule: {parse: [Function] } }
这是一个module.exports对象,它有一个名为MyModule的属性(对象),它有一个名为parse的属性(函数)。
因此,当您需要获取分配了MyModule而不仅仅是MyModule的module.exports对象时。
如果您要将module.exports代码更改为:
module.exports.X = MyModule;
您需要MyModule的代码会记录:
{ X: {parse: [Function] } }
你会把它称为
MyModule.X.parse(...).
如果您随后将代码更改为
const MyFabulousModule = require('./MyModule');
然后你会把它称为:
MyFabulousModule.X.parse(...);
最后,如果您在模块中添加了另一行:
module.exports.Y = 4;
然后在您的通话代码中添加:
console.log(MyFabulouseModule.Y);
你会看到值4登录到控制台。
代码:
<强> MyModule.js 强>
const MyModule = {};
MyModule.parse = function(data) {
console.log(data);
};
module.exports.X = MyModule;
module.exports.Y = 4;
<强> test.js 强>
const MyModule = require("./MyModule");
console.log(MyModule);
MyModule.X.parse("hello world");
console.log(MyModule.Y);
运行:node test.js
答案 1 :(得分:0)
首先,您需要在定义对象中添加关键字。
const MyModule = {};
并导出您指定为常量的对象,因此您需要从中调用对象,如下所示:
MyModule.MyModule.parse('...')