Babel错误:如果没有' new',则无法调用类构造函数Foo。

时间:2016-04-12 15:26:40

标签: ecmascript-6 babel

我正在使用babel来表达。

class BaseComponent class Logger扩展了new Logger()

当我在浏览器中运行var Logger = function (_BaseComponent) { _inherits(Logger, _BaseComponent); function Logger() { _classCallCheck(this, Logger); return _possibleConstructorReturn(this, Object.getPrototypeOf(Logger).call(this, "n")); //throws here } 时,我收到此错误

如果没有' new'

,则无法调用类构造函数BaseComponent

抛出此代码的代码是:

GPIO_ECHO

2 个答案:

答案 0 :(得分:9)

由于ES6类的工作方式,您无法使用已编译的类扩展本机类。如果您的平台支持本机类,我建议使用es2015,而不是使用预设es2015-node5,假设您在节点5上。这将导致Babel跳过编译类以便您的代码使用本机类,本机类可以扩展其他本机类。

答案 1 :(得分:6)

另一种解决方案是在transform-es2015-classes

中排除.babelrc
presets: [
   ["env", { exclude: ["transform-es2015-classes"] }]
]

更新:在最新版本的“env”预设插件名称已更改(例如,它现在是“transform-classes”)。使用“debug”选项检查包含哪些插件。