本以为昨天我已经弄明白了,但是我显然没有,经过一整天的努力后,我再次寻求帮助。
我有一个通过npm link
“安装”的模块,该模块用ES6编写。我要导出的一类叫做“易腐”。如果问题仍然存在,我将课程减少到最低限度。
export default class Perishable {
constructor() {
}
}
我正在尝试扩展类,并且这样做是这样的:
// Perishable is imported already and IS NOT NULL.
export default class Apple extends Perishable {
constructor() {
super()
}
}
呼叫new Apple()
时出现以下错误:Class constructor Perishable cannot be invoked without 'new'
但是,我可以通过new Perishable()
直接创建一个新的Perishable类,而不会出现任何问题。
要添加此内容,请将类复制并粘贴到同一目录中,并使用相对路径导入它,这样我就可以正确调用new Apple()
。我相信这与webpack / babel转换符号链接类的方式有关。这是我在检查转译代码时得到的:符号链接类的
var Apple = function (_Perishable) {
_inherits(Apple, _Perishable);
function Apple() {
_classCallCheck(this, Apple);
return _possibleConstructorReturn(this, (Apple.__proto__ || Object.getPrototypeOf(Apple)).call(this));
}
return Apple;
}(_idleEngine.Perishable);
这是我检查本地类(正常工作)的代码时得到的。
var Apple = function (_Perishable) {
_inherits(Apple, _Perishable);
function Apple() {
_classCallCheck(this, Apple);
return _possibleConstructorReturn(this, (Apple.__proto__ || Object.getPrototypeOf(Apple)).call(this));
}
return Apple;
}(_Perishable3.default);
两个生成的代码之间唯一的区别是末尾的卷轴中的内容,一个是(_idleEngine.Perishable)
,另一个是(_Perishable3.default)
。
console.log(Perishable)
对于两种类型的导入均返回相同的结果,而new Perishable()
对于两种类型的导入均适用。
我应该补充一点,符号链接类是通过npm link
和local
类导入的,我刚刚从库中复制并粘贴了该类,并将其与Apple类放在同一文件夹中。
编辑:这似乎仅是与syslinked模块有关的问题,因为发布该模块“已解决”该问题。