繁体   English   中英

ES6-扩展时未定义类方法-babel问题

[英]ES6 - Class Methods not defined when extending - babel issue

我正在扩展一个类,并为其添加一些属性和方法:

class Cmp extends ConsentString {
  constructor(result = null) {
    super(result);
    this.setCmpId(52);
  }
  loaded() {
    return this.cmpLoaded;
  }
}

然后,我正在创建一个函数,该函数返回创建类的新实例的承诺:

export default function initCmp(loaderData) {
  return new Promise((resolve, reject) => {
    const cmp = new Cmp();
    console.log('testing', cmp.loaded()); // undefined!
    if (!cmp) reject();
    console.log('CMP: ', cmp); // this logs as you would expect apart from there are non of the methods with which I extend.
    resolve(cmp);
  });

我可以访问原始类中的方法和属性,以及扩展中的任何属性,但不能访问任何方法-它们都是未定义的。

我尝试了很多事情,例如bind(this)并将方法名称添加到构造函数中,似乎没有任何效果。

我还感觉到此错误是作为添加的Babel Transform Runtime的一部分引入的,以便能够使用async / await。

编辑:ConsentString类在这里https://github.com/InteractiveAdvertisingBureau/Consent-String-SDK-JS/blob/master/src/consent-string.js

更新:我试图在不扩展类的情况下运行流,而是创建一个新的类,一切正常-因此问题必须与扩展有关,但是我不确定那是什么,这仍然是一个问题。

更新2:当我从babel中删除两个插件时: @babel/plugin-transform-runtimetransform-async-to-generator都可以正常工作。

请帮忙!

我已经(由于与@JamesLeClair聊天)包含了babel-polyfill而不是解决了问题的运行时。

这不是完美的解决方案,因为我正在图书馆工作,但现在可以让一切保持运转!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM