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

Ecmascript 6 在现有项目中使用babeljs编译文件,ecmascript-6,babeljs,Ecmascript 6,Babeljs,我有一个用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) { t

我有一个用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没有方法allvalue。我想做的是可能的吗?

必须实例化类。您从未创建过
MyClass
的实例。您还错误地导入了它。您正在将
MyClass
导出为命名导出,并且必须将其作为命名导出进行导入

以目前的形式,您必须

var MyClass = require('./MyClass').MyClass;
var t = new MyClass();
console.log(t.allValues());
也可以将其导出为默认导出:

export default MyClass;
在这种情况下,你可以这样做

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

(至少对巴贝尔来说)

“我想做的事情可能吗?”你想做什么?类必须被实例化。您从未创建过
MyClass
的实例。您还错误地导入了它。在它的当前形式中,您必须执行
var MyClass=require('./MyClass').MyClass;var t=新的MyClass();log(t.allValues())。如果您将此更改为答案,我会将其标记为已回答。我只是想澄清一下。您是否在
ES5
中使用新的
ES5
编译代码,有没有
Babel
库?我想没有吧?我只是打算编译到ES5,然后按原样使用文件。你是对的,我错过了用他的对象
{MyClass}包装
导出
我的回答是,我认为OP使用的是
Babel
来创建
ES5
编译代码,并将其直接注入到他的旧项目中,而无需使用
Babel
库。如果他不是,我的错。