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

我尝试在我的node.js / express应用程序上创build一个类。

它在基本的JS /原型模式下工作,例如:

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

但我想要使用类,构造函数,扩展…关键字。

我试过了:

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

但它不起作用,错误是:

 class MyClass { ^^^^^ SyntaxError: Unexpected reserved word 

我的命令行启动与所有和谐选项的应用程序:

 node `node --v8-options | grep harmony | cut -d ' ' -f | xargs` my-app.js 

一个想法正确启动我的应用程序?

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

 iojs --use_strict --harmony_classes my-app.js 

或与traceur node.js

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

确保在使用它们之前testing新的function,有些不支持。 编辑:您可以从这里检查兼容性列表

你需要一个更新版本的nodejs。 class关键字在4.4.x中受支持 ,但是我个人认为它在v4.2.6中可用。 (不完全确定哪个版本的v8发布了它,这是什么会告诉节点版本。)

我有这个问题。

这是因为我下载了nodejs的源代码,而不是在我的Ubuntu上编译/编译它。 ./configure然后makemake install

出于某种原因,像classextends ES6保留字是抛出SyntaxError:意外的保留字,即使使用--harmony标志。

它解决了我下载linux的nodejs二进制文件( https://nodejs.org/download/ )。

现在,即使没有--harmony旗帜,也能延续工作。

我相信这个问题来自我的build筑/编译过程。 出于某种原因,ES6添加内置或configuration不正确。

据我了解,二进制文件已经完全正确地build立在Linux上,因此ES6被正确添加和configuration。