这似乎是一件简单的事情,但我是一个 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/