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

时间:2014-11-27 19:12:51

标签: javascript node.js express ecmascript-6 ecmascript-harmony

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

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

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

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

module.exports = MyClass;

但我想使用class,constructor,extends,... keywords。

我试过了:

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 

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

3 个答案:

答案 0 :(得分:7)

您可以使用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();

确保在使用之前测试新功能,但有些功能不受支持。 编辑:您可以查看here

中的兼容性列表

答案 1 :(得分:7)

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

答案 2 :(得分:4)

我有这个问题。

这是因为我下载了nodejs'源代码比在我的Ubuntu上构建/编译它。 make然后make installclass

出于某种原因,ES6保留字extends--harmony正在抛出SyntaxError:意外的保留字,即使使用--harmony标志也是如此。

我通过下载linux(https://nodejs.org/download/)的nodejs二进制文件解决了这个问题。

现在即使没有mGoogleApiClient = new GoogleApiClient.Builder(MainActivity.this) .addApi(Places.GEO_DATA_API) .enableAutoManage(this, GOOGLE_API_CLIENT_ID, this) .addConnectionCallbacks(this) .build(); PendingResult<AutocompletePredictionBuffer> results = Places.GeoDataApi.getAutocompletePredictions(mGoogleApiClient, constraint.toString(), mBounds, null); 标志,也可以进行分类和扩展工作。

我认为这个问题来自我的构建/编译过程。由于某种原因,ES6的添加没有正确构建或配置。

根据我的理解,二进制文件已经完全正确地为linux构建,因此正确地添加和配置了ES6。