2017-12-14 11 views
1

エクスプレスとノードでエクスポートして使用するクラスがファイルにあります。 I'ldは矢印の機能を使用するように、それは例です:Expressエクスポートクラスの矢印機能 - 予期しないトークン

class MyClass { 

    myFunc(arg) { 
     console.log(arg); 
    } 

    myArrowFunc = (arg1, arg2) => { 
     console.log(arg1); 
     console.log(arg2); 
    }; 
} 


module.exports = { 
    MyClass 
} 

すべてがmyArrowFuncを追加する前に、正常に動作します。それが動作するはずですので

myArrowFunc = (arg1, arg2) => { 
      ^
SyntaxError: Unexpected token = 

マイノードのバージョンが9.xのです...または私は何かを忘れてしまった。その後、私は、実行アプリの後にエラーが発生しています。

+1

とにかく矢印機能のポイントは何ですか?あなたがそうするとき、 'this'はオブジェクトのインスタンスではないので、実際にあなたのオブジェクトのメソッドではありません。実際に解決しようとしている問題は何ですか? – jfriend00

答えて

0

エクスプレスアプリで新しいJavascript(es6)を使用するには、es6コードをes5にコンパイルするためにbabelをインストールする必要があります。 Babelコンパイラでは、Expressアプリケーションで新しいJavaScript機能を使用できます。

これらの依存関係は、プロジェクトでbabelコンパイラを使用するために必要です。

1)バベル-CLI:全es2015プラグインのバベルプリセット:バベル

2)バベル・プリセット・es2015を使用してコマンドラインからファイルをコンパイル。

を実行し、このコマンドは、残りはあなたがそのようなクラスの割り当てを置くことができない、このリンクhttps://www.codementor.io/iykyvic/writing-your-nodejs-apps-using-es6-6dh0edw2o

+2

確かに、Nodeは矢印機能のためのバベルが今では動作する必要はありません。問題は、クラスフィールドまたはプロパティ初期化子(または呼び出されたもの)の_experimental feature_がNodeには作成されていませんが、それらはバベルで利用可能です。 – Andy

+0

Babelで問題のコードを処理しようとすると、次のようになります: 'SyntaxError:module.js:予期しないトークン(7:16)' – Quentin

+0

わかりません。例えば、4.x.x以下の古いバージョンを使用している人が助けてくれることを願ってください。 – digit

0

に従ってください

npm install -save-dev babel-cli babel-preset-es2015 

ターミナル

を使用してnodejsプロジェクトにバベルをインストールします。

コンストラクタに入れてみませんか?その中のプロパティを初期化します。

いいえbabeljsが必要です。

class MyClass { 
    constructor(){ 
     this.myArrowFunc = (arg1, arg2) => { 
      console.log(arg1); 
      console.log(arg2); 
     }; 
    } 
    myFunc(arg){ 
     console.log(arg); 
    } 
} 
関連する問題