Creación de node.js / ES6 / class: SyntaxError: palabra reservada inesperada

Intento crear una class en mi aplicación node.js / express.

Funciona en modo básico js / prototipo, como:

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

Pero quiero utilizar las palabras key class, constructor, extends, …

Lo he intentado:

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

Pero no funciona, el error es:

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

Mi línea de command para iniciar la aplicación con todas las opciones de armonía:

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

¿Una idea para lanzar mi aplicación correctamente, por favor?

Puedes hacer esto con io.js

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

O en node.js con traceur

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

Asegúrese de probar las nuevas características antes de usarlas, algunas no son compatibles. Editar: puedes consultar la list de compatibilidad desde aquí

Necesitas una versión más nueva de nodejs. La palabra key class se admite en 4.4.x , pero personalmente estoy viendo que funciona en v4.2.6. (No estoy del todo seguro de qué versión de v8 lo lanzó, que es lo que le diría a la versión del nodo).

Tuve este problema

Fue causado porque descargué el código fuente de nodejs que lo compilé / compilé en mi Ubuntu. ./configure luego make y make install .

Por alguna razón, las palabras reservadas de ES6, como class y extends , arrojaban SyntaxError: palabra reservada inesperada, incluso cuando se utilizaba la bandera --harmony .

Fue resuelto al download los binarys de nodejs para Linux ( https://nodejs.org/download/ ).

Ahora clasifica y extiende el trabajo incluso sin la bandera de --harmony .

Creo que el problema surgió de mi process de construcción / compilation. Por alguna razón, las adiciones de ES6 no se construyeron o configuraron correctamente.

Los binarys, a mi entender, están construidos de forma completa y correcta para Linux y, por lo tanto, el ES6 se agrega y configura correctamente.