在NodeJS中添加ECMA6类支持

时间:2015-11-18 19:54:25

标签: javascript node.js class ecmascript-6

通过查看参考ECMA6的文档部分的Node官方网站,我了解到ecma6功能分为三组,即:

  • 航运
  • 上演
  • 正在进行中

在发货类别(不需要运行时标志(如和声))中,类具有特色,但附加说明(仅限严格模式)。

我无法找到一个在线资源,其中明确说明NodeJS v 0.12(我正在运行的那个)是否支持ECMA6类。

所以,按照上面提到的页面中的描述,我尝试在我的js文件中包含“use strict”,既可以在文件的开头,也可以作为类的范围内的替代方法,在任何方法或属性之前宣言。但是,当我运行node whatever.js时,我得到了SyntaxError:意外的保留字,引用了“class”关键字。

其他一些网络资源声称要解决保留字错误,只需使用--harmony标志就会有所帮助。我也试过了,但没有任何成功。当我运行节点--v8-options | grep harmony我得到以下列表:

--harmony_scoping (enable harmony block scoping)
  --harmony_modules (enable harmony modules (implies block scoping))
  --harmony_proxies (enable harmony proxies)
  --harmony_generators (enable harmony generators)
  --harmony_numeric_literals (enable harmony numeric literals (0o77, 0b11))
  --harmony_strings (enable harmony string)
  --harmony_arrays (enable harmony arrays)
  --harmony_arrow_functions (enable harmony arrow functions)
  --harmony (enable all harmony features (except proxies))

就我而言,课程不包括在此列表中。

我还尝试安装babel-node并从CLI运行相同的代码,但在收到相同的SyntaxError后仍然没有成功。

我的问题是,您对在NodeJS中使用 ECMA6类进行测试的最实用方法有什么建议,最好不需要安装一些编译器,例如traceur。理想情况下,我想澄清为什么Node的文档页面说明类功能仅在严格模式下启用,但在使用strict时仍然会收到错误。

以防万一:

//tried here "use strict";
    class Cat {
        //or here "use strict";
        constructor(name) {
            this.name = name;
        }

        speak(){
            console.log(this.name + 'makes a noise.');
        }
    }

    class Lion extends Cat {
        //and here "use strict";
        speak(){
            super.speak();
            console.log(this.name + 'roars');
        }
    }

    const animal1 = new Cat('cat');
    const animal2 = new Lion('lion');
    console.log(animal1);
    console.log(animal2);

编辑(对于最终会偶然发现此问题的任何人): 我已经成功解决了这个问题,升级到最新版本的NodeJS(现在正在编写5.0.0)。 This页面有关如何正确执行升级的简洁说明。现在,当在文件的开头包含“use strict”时,程序会运行无错误,并且我会收到预期的输出。

0 个答案:

没有答案