web-dev-qa-db-ja.com

Node.js readline:予期しないトークン=>

Node.jsを学習しており、プロジェクトにreadlineを使用する必要があります。 readlineモジュールの例 から直接次のコードがあります。

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('What do you think of Node.js? ', (answer) => {
  // TODO: Log the answer in a database
  console.log('Thank you for your valuable feedback:', answer);

  rl.close();
});

しかし、node try.jsコマンドを使用してコードを実行すると、次のようなエラーが表示され続けます。

rl.question('What is your favorite food?', (answer) => {
                                                    ^^
SyntaxError: Unexpected token =>
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3
9
user3700129

矢印関数ECMAScript 6標準 の新機能の1つ、 バージョン4.0.0 でのみnode.jsに(安定した機能として)導入されました。

Node.jsのバージョンをアップグレードするか、次のような古い構文を使用できます。

rl.question('What do you think of Node.js? ', function(answer) {
  // TODO: Log the answer in a database
  console.log('Thank you for your valuable feedback:', answer);

  rl.close();
});

(これらの構文にはもう1つの違いがあることに注意してください。this変数の動作は異なります。この例では問題ではありませんが、他の例では問題になる可能性があります。)

16
CherryDT

ノードのバージョンをアップグレードします。

矢印関数がノード(バージョン4.0.0)で機能するようになりました。ここを参照してください: Node.jsのECMAScript 2015(ES6)

node -vで実行しているバージョンを確認してください

アップグレードする必要がある可能性があります。他に利用できるものを確認するには、ここの互換性テーブルを確認してください。

ノード互換性テーブル

3
JordanHendrix

=>構文は、矢印関数と呼ばれ、JavaScriptの比較的新しい機能です。これを利用するには、同様に新しいバージョンのNodeが必要です。

0
Mat