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

时间:2018-06-19 12:13:15

标签: javascript webpack ecmascript-6 babeljs babel

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

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

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

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

请帮助!

1 个答案:

答案 0 :(得分:0)

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

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