node.js/ES6 /类创建:SyntaxError:意外的保留字

cea*_*eak 15 javascript node.js express ecmascript-harmony ecmascript-6

我尝试在我的node.js/express app上创建一个类.

它适用于基本的js/prototype模式,例如:

function MyClass() { 
    /* constructor code */
};

MyClass.prototype.myMethod = function() {
    /* method code */
};

module.exports = MyClass;
Run Code Online (Sandbox Code Playgroud)

但我想使用class,constructor,extends,...关键字.

我试过了:

class MyClass {
    constructor() {
        /* constructor code */
    }

    myMethod() {
        /* method code */
    }

}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,错误是:

class MyClass {
^^^^^
SyntaxError: Unexpected reserved word
Run Code Online (Sandbox Code Playgroud)

我的命令行用于启动具有所有和声选项的应用程序:

node `node --v8-options | grep harmony | cut -d ' ' -f | xargs` my-app.js 
Run Code Online (Sandbox Code Playgroud)

想要正确启动我的应用程序的想法吗?

Ser*_*top 7

你可以用io.js做到这一点

iojs --use_strict --harmony_classes my-app.js
Run Code Online (Sandbox Code Playgroud)

或者在带有traceur的 node.js上

var traceur = require('traceur');
traceur.require.makeDefault(function(file) {
  return file.indexOf('node_modules') == -1;
});

require('./my-app').run();
Run Code Online (Sandbox Code Playgroud)

确保在使用之前测试新功能,但有些功能不受支持.编辑:您可以从此处查看兼容性列表


Tha*_*Guy 7

您需要更新版本的nodejs.该class关键字在4.4.x中受支持,但我个人认为它在v4.2.6中有效.(不完全确定哪个版本的v8发布了它,这将告诉节点版本.)