gpt4 book ai didi

javascript - 模块函数在外部脚本中显示为未定义

转载 作者:行者123 更新时间:2023-12-03 02:41:42 24 4
gpt4 key购买 nike

这段代码告诉我解析函数不是一个函数:

const  MyModule = require('./MyModule.js');

MyModule.parse('...');

在我的模块脚本中,它的定义如下:

MyModule = {};

MyModule.parse = function(data){

};


module.exports.MyModule = MyModule;

我做错了什么?

最佳答案

您必须明白,您导出的不是 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);

运行:node test.js

关于javascript - 模块函数在外部脚本中显示为未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48302350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com