webpack - Babel 和 EventTarget 的子类

标签 webpack babeljs dom-events babel-loader

我为 WebGL 程序导出了以下 JS 类:

export default class MyClass extends EventTarget {
  constructor(gl) {
    super();
    // more code here
  }
}

Babel (babel-preset-es2015) 在 webpack JS bundle 中生成如下代码:

var MyClass = function(_EventTarget) {
  _inherits(MyClass, _EventTarget);

  function MyClass(gl) {
    _classCallCheck(this, MyClass);
    var _this = _possibleConstructorReturn(this, 
                  (MyClass.__proto__ || 
                   Object.getPrototypeOf(MyClass)).call(this)); // ***
    // more code here
  }
};

在运行时,我从上面用 *** 标记的 .call(this) 调用中得到以下错误。

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

我最初认为这是一个与 Webpack 相关的问题,但经过更多研究后,我现在认为这个错误与 Babel 转换我的代码的方式有关。

我应该在 babel-preset-es2015 中启用哪些选项,或者我应该使用不同的 babel 插件?

最佳答案

通过向我的项目添加一个 npm 模块 event-target-shim 找到我自己的问题的解决方案,并通过添加以下导入更改类:

import { EventTarget } from 'event-target-shim';

export default class MyClass extends EventTarget {
  /* same as above */
}

关于webpack - Babel 和 EventTarget 的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49011024/

相关文章:

javascript - 箭头函数语法不适用于 webpack?

javascript - 如何在 .babelrc 文件上设置和保留语言语法类型

npm - 如何使用 webpack 在 npm 包子文件夹中导入模块?

javascript - 为什么它不删除事件监听器?

javascript - 找不到 CSS 和 JS 的 Vue dist 路径

reactjs - 如何在没有 Webpack 的情况下使用 Babel

javascript - React 组件库的多个导出

node.js - Webpack 打破 Node.js 应用程序中的 Mocha

javascript - 如何将 eventListener 添加到 JavaScript 中的对象,该对象将在操作对象时触发?

javascript - 如何过渡路径的线性渐变