gpt4 book ai didi

javascript - 如何导出 Node 中的类?

转载 作者:行者123 更新时间:2023-12-02 13:58:55 25 4
gpt4 key购买 nike

这似乎是一件简单的事情,但我是一个 Node/javascript 新手。如何使用 Node 7.0.0 从另一个文件导入类?

我在一个文件中定义了我的类:

'use strict';

class MyClass {
...
};

module.exports = MyClass;

我想在另一个类中使用它:

var MyClass = require('./path/to/otherfile');
...
var myclass = new MyClass(some param);

但我从 linter 中收到错误消息

TypeError: Class constructor MyClass cannot be invoked without 'new'

最佳答案

此代码是正确的并且可以在 Node 7.0.0 中运行。请参阅此示例:

文件class.js:

'use strict';
class MyClass {
}
module.exports = MyClass;

文件code.js:

var MyClass = require('./class.js');
var myclass = new MyClass();
console.log('OK');

运行:

node code.js

你会看到:

OK

损坏的不是你的代码,而是你的 linter,但你没有指定你使用的是什么 linter,所以很难说更多。

我不知道为什么人们建议你应该使用 module.exports.MyClass = MyClass; 而不是 module.exports = MyClass; - 它不仅会不能解决问题,但实际上会破坏代码,并给出以下错误:

TypeError: MyClass is not a constructor 

还有建议使用此方法的人:

export default MyClass;

不,在 Node 7.0.0 中会报错:

SyntaxError: Unexpected token export

读完这个问题的评论后,我想知道有多少人实际运行了代码,因为事实证明代码工作正常,但评论中的所有“解决方案”都破坏了它。

我使用原始代码创建了一个 GitHub 项目,并在 Travis 上使用 Node 版本 4、5、6 和 7 测试了建议的解决方案。您可以在此处查看:

测试结果可在以下位置获取:

当我知道哪个 linter 导致问题时,我会将其添加到项目中,我们将看看可以采取什么措施。

关于javascript - 如何导出 Node 中的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40515954/

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