我想扩展MediaSource。我正在使用巴贝尔。
class BradMediaSource extends MediaSource {
constructor() {
super();
}
}
const source = new BradMediaSource();
直接在Chrome中,这很好用。在用Babel完成的转换构建中,我收到以下错误:
未捕获TypeError:无法构造'MediaSource':请使用'new'运算符,此DOM对象构造函数不能作为函数调用。
这似乎与此GitHub问题相似:https://github.com/babel/babel/issues/1966我也尝试了以下方法,但它似乎并不适用于我的具体情况......没有区别:https://www.npmjs.com/package/babel-plugin-transform-custom-element-classes
我的.babelrc
:
{ "presets": [ "es2015" ] }
有解决这个问题的方法吗?
答案 0 :(得分:1)
通常,扩展的内置类型不适用于Babel的编译类,因此您需要将Babel配置为不处理类,并将应用程序限制为仅支持类的浏览器。
假设您的目标浏览器都支持ES6类语法,最简单的方法是使用为这些目标环境配置的babel-preset-env
。
你也可以尝试在你的Babel配置MediaSource
中使用transform-builtin-extend
,但这确实会随着可以扩展的内容而变化。