繁体   English   中英

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

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

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

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

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

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

module.exports = MyClass;

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

我试过了:

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();

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

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

我有这个问题。

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

出于某种原因,ES6保留的classclassextends都抛出了SyntaxError:意外的保留字,即使使用--harmony flag也是如此。

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

现在即使没有--harmony标志,也可以扩展工作。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM