node.js - Module.exports:不是构造函数错误
问题描述
有人可以解释为什么第一次导出会引发is not a constructor
错误,而第二次导出有效吗?
// Throws a `is not a constructor` error
module.exports = {
Person: function () {
constructor()
{
this.firstname;
this.lastname;
}
}
}
// Works
class Person {
constructor()
{
this.firstname = '';
this.lastname = '';
}
}
module.exports = Person;
// Usage:
const Person = require("person");
let person = new Person();
解决方案
因为第一次实际导出包含属性的对象时:
module.exports = { /*...*/ };
而且你不能构造那个对象。但是,您可以获得 Person 属性并构造它:
const Person = require("person").Person;
new Person();
您还可以解构导入的对象:
const { Person } = require("person");
new Person();
...但这只有在那里导出其他东西时才有意义,否则我会选择 v2。
推荐阅读
- docker - 使用 docker 为本地开发添加 ssl 证书
- macos - 如何以编程方式在 Excel for Mac 中截取选定范围的屏幕截图?
- numpy - 如何使用更多 CPU 来运行我的 python 脚本
- ios - 如何在swift4中用不同颜色或图像填充UIView的彩色部分
- angular - Angular2 - 带有多个复选框的 NgFor
- python-3.x - color.cpp:11147: 错误: (-215) scn == 3 || 函数 cv::cvtColor 中的 scn == 4
- java - 在 PoolProperties 类中添加编码
- python - tf.data.Dataset.map() 的输出张量形状有些奇怪
- json - 如何使用 SQFLite 或 Moor 库将 JSON 数据存储到颤振中的数据库表中
- r - 从 R 连接到麒麟