Node.js/expressアプリでクラスを作成しようとしています。
次のような基本的なjs /プロトタイプモードで動作します。
function MyClass() {
/* constructor code */
};
MyClass.prototype.myMethod = function() {
/* method code */
};
module.exports = MyClass;
しかし、クラス、コンストラクター、拡張、...キーワードを使用したいと思います。
私はそれを試しました:
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の新しいバージョンが必要です。 class
キーワードは 4.4.xでサポート ですが、個人的にはv4.2.6で動作するようです。 (v8のどのバージョンがそれをリリースしたかは完全にはわかりません。これはノードのバージョンを伝えるものです。)
私はこの問題を抱えていました。
Ubuntuでビルド/コンパイルするよりもnodejsのソースコードをダウンロードしたために発生しました。 ./configure
、次にmake
およびmake install
。
何らかの理由で、class
やextends
などのES6予約語が、--harmony
フラグを使用していても、SyntaxError:Unexpected reserved Wordをスローしていました。
Linuxのnodejsバイナリをダウンロードすることで解決しました( https://nodejs.org/download/ )。
--harmony
フラグがなくても、クラスと拡張機能が機能するようになりました。
問題は私のビルド/コンパイルプロセスから生じたと思います。何らかの理由で、ES6の追加が正しく構築または構成されていません。
私の理解では、バイナリは完全にLinux用に正しく構築されているため、ES6が正しく追加および設定されています。