2017-09-15 112 views
0

我想擴展MediaSource。我在使用Babel。用Babel擴展MediaSource - 如何正確調用super()?

class BradMediaSource extends MediaSource { 
    constructor() { 
    super(); 
    } 
} 

const source = new BradMediaSource(); 

在Chrome直接,這工作正常。在與巴貝爾做了transpiled構建,我得到以下錯誤:

Uncaught TypeError: Failed to construct 'MediaSource': Please use the 'new' operator, this DOM object constructor cannot be called as a function.

這似乎與此類似GitHub的問題:https://github.com/babel/babel/issues/1966我也曾嘗試以下包,但它似乎並不適用於我的具體情況......沒有什麼區別:https://www.npmjs.com/package/babel-plugin-transform-custom-element-classes

.babelrc

{ "presets": [ "es2015" ] } 

有沒有解決這個問題的方法嗎?

+0

可能的重複[在ES6中使用Babel擴展內置原生](https://stackoverflow.com/questions/33832646/extending-built-in-natives-in-es6-with-babel) – estus

回答

1

一般來說,擴展內建類型不適用於Babel的編譯類,因此您需要配置Babel以不處理類,並將應用程序僅限於支持類的瀏覽器。

假設您的目標瀏覽器都支持ES6類語法,最簡單的方法是使用爲這些目標環境配置的babel-preset-env

你也可以嘗試在你的Babel配置文件MediaSource中使用transform-builtin-extend,雖然這樣會隨着確切的事情而變化。

+0

不應該這是由你在這裏建議的插件處理? https://stackoverflow.com/questions/33832646/extending-built-in-natives-in-es6-with-babel/39376819#39376819 – estus

+0

可能。編輯。 – loganfsmyth