我尝试在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
想要正确启动我的应用程序吗?
答案 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 install
和class
。
出于某种原因,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。