模块函数在外部脚本中未定义
Module functions appear undefined in outside scripts
这段代码告诉我解析函数不是一个函数:
const MyModule = require('./MyModule.js');
MyModule.parse('...');
在我的模块脚本中,它是这样定义的:
MyModule = {};
MyModule.parse = function(data){
};
module.exports.MyModule = MyModule;
我做错了什么?
首先,您需要在定义对象中添加关键字。
const MyModule = {};
然后导出指定为常量的对象,因此您需要像这样从中调用对象:
MyModule.MyModule.parse('...')
你必须明白你不是在导出 MyModule 而是一个对象(module.exports 准确地说)有一个名为 MyModule 的成员(这是你分配给它的)。
如果在需要 MyModule 的代码中,您 console.log 需要的结果,它看起来像:
{ MyModule: {parse: [Function] } }
这是一个 module.exports 对象,它有一个名为 MyModule 的 属性(对象),它有一个名为 parse 的 属性(函数)。
因此,当您需要时,您将获得分配给 MyModule 的 module.exports 对象,而不仅仅是 MyModule。
如果您要将 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);
至运行:节点test.js
这段代码告诉我解析函数不是一个函数:
const MyModule = require('./MyModule.js');
MyModule.parse('...');
在我的模块脚本中,它是这样定义的:
MyModule = {};
MyModule.parse = function(data){
};
module.exports.MyModule = MyModule;
我做错了什么?
首先,您需要在定义对象中添加关键字。
const MyModule = {};
然后导出指定为常量的对象,因此您需要像这样从中调用对象:
MyModule.MyModule.parse('...')
你必须明白你不是在导出 MyModule 而是一个对象(module.exports 准确地说)有一个名为 MyModule 的成员(这是你分配给它的)。
如果在需要 MyModule 的代码中,您 console.log 需要的结果,它看起来像:
{ MyModule: {parse: [Function] } }
这是一个 module.exports 对象,它有一个名为 MyModule 的 属性(对象),它有一个名为 parse 的 属性(函数)。
因此,当您需要时,您将获得分配给 MyModule 的 module.exports 对象,而不仅仅是 MyModule。
如果您要将 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);
至运行:节点test.js