奇怪的继承问题“没有'new'就无法调用”

时间:2018-11-14 07:07:46

标签: javascript webpack ecmascript-6 babel

本以为昨天我已经弄明白了,但是我显然没有,经过一整天的努力后,我再次寻求帮助。

我有一个通过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 linklocal类导入的,我刚刚从库中复制并粘贴了该类,并将其与Apple类放在同一文件夹中。


编辑:这似乎仅是与syslinked模块有关的问题,因为发布该模块“已解决”该问题。

0 个答案:

没有答案