在现有项目中使用 babeljs 编译文件

Using babeljs compiled files with existing project

我有一个简单的 class 是用 ES6 写的

class MyClass {
  constructor() {
    this.firstVar = 'a';
    this.secondVar = 'b';
  }
  get first() { return this.firstVar; }
  set first(val) { this.firstVar = val; }

  get second() { return this.secondVar; }
  set second(val) { this.secondVar = val; }

  allValues() {
    return this.firstVar + this.secondVar;
  }
}

export { MyClass };

我通过 babel MyClass.es6 > MyClass.js 将该代码编译为 ES5,然后尝试在我现有的 ES5 代码库中使用它:

var t = require('./MyClass');
console.log(t.allValues());

但我收到一条错误消息,指出 t 没有方法 allValues。我正在尝试做的事情可行吗?

类 必须实例化。您永远不会创建 MyClass 的实例。您还错误地导入了它。您正在将 MyClass 导出为 命名导出 ,并且必须将其导入。

在目前的形式下,你必须做

var MyClass = require('./MyClass').MyClass;
var t = new MyClass();
console.log(t.allValues());

或者您可以将其导出为默认导出:

export default MyClass;

在这种情况下你可以做

var t = require('./MyClass');

(至少有 Babel)