[英]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-runtime
和transform-async-to-generator
都可以正常工作。
请帮忙!
我已经(由于与@JamesLeClair聊天)包含了babel-polyfill而不是解决了问题的运行时。
这不是完美的解决方案,因为我正在图书馆工作,但现在可以让一切保持运转!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.