node.js / ES6 / class creation : SyntaxError: Unexpected reserved word

ceadreak picture ceadreak · Nov 27, 2014 · Viewed 19.4k times · Source

I try to create a class on my node.js / express app.

It works in basic js / prototype mode such as :

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

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

module.exports = MyClass;

But I want to do use the class, constructor, extends, ... keywords.

I've try that :

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

    myMethod() {
        /* method code */
    }

}

But it doesn't work, the error is :

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

My command line to launch the app with all harmony options :

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

An idea to launch my app correctly please ?

Answer

SerkanSerttop picture SerkanSerttop · Jan 19, 2015

You can do this with io.js

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

Or on node.js with traceur

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

require('./my-app').run();

Make sure to test the new features before using them, some are not supported. Edit: You can check the compatibility list from here