2016-04-25 9 views
3

Ich lerne node.js und muss readline für ein Projekt verwenden. Ich habe den folgenden Code direkt von der readline module example.Node.js readline: Unerwartetes Token =>

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

Aber wenn ich den Code über node try.js Befehl ausführen, hält es die Fehler wie unten heraus geben:

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 
+3

Welche Version des Knotens verwenden Sie? Möglicherweise der, der die ES6-Pfeilsyntax nicht unterstützt. – Tushar

+1

Aktualisieren Sie Ihren Knoten – DININDU

+0

Da Ihr Problem scheint gelöst zu sein, wäre es toll, wenn Sie die beste Antwort akzeptieren könnten. – CherryDT

Antwort

8

Arrow functions, eine der neuen Funktionen der ECMAScript 6 standard wurden t eingeführt o node.js (als stabile Funktion) nur in version 4.0.0.

Sie können entweder Ihre node.js Version aktualisieren oder die alte Syntax verwenden, die wie folgt aussehen:

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

(Beachten Sie, dass es einen weiteren Unterschied zwischen diesen Syntaxen ist: Die this Variable anders verhält. Für dieses Beispiel spielt das keine Rolle, in anderen jedoch.)

+0

Danke! Das hat das Problem gelöst. Entschuldigung, ich habe nicht genug Reputation, um sie zu verbessern. Ich bin auf Windows und die Versionsnummer ist 0.12.2, die im Vergleich zu 4.0.0 wirklich alt scheint. Aber ich kann nicht scheinen, es durch npm zu aktualisieren (ich bin auf Windows und benutzte den Befehl "npm install -g n"). Warum das? – user3700129

+0

Ich hatte auch Probleme mit npm selbst in älteren Versionen zu aktualisieren, ich bin mir nicht sicher, was es verursacht, aber ich habe dann nur die [neueste Version von der node.js Website] (https://nodejs.org/en/download) heruntergeladen /) und installiert es. (Und in der Zwischenzeit wechselte ich zu [Chocolatey] (https://chocolatey.org/), einem netten Paket-Manager für Windows, wo es darum geht, 'cup nodejs.install' einzugeben, um den Knoten zu aktualisieren.) – CherryDT

+0

I habe es einfach durch choco installiert. Es hat perfekt funktioniert! – user3700129

0

Die => Syntax, als Pfeil Funktion bekannt ist, ist ein relativ neues Merkmal JavaScript. Sie benötigen eine ähnlich neue Version von Node, um davon profitieren zu können.

0

Aktualisieren Sie Ihre Knotenversion.

Pfeil Funktionen jetzt in Knoten arbeiten (Version 4.0.0) sehen hier: ECMAScript 2015 (ES6) in Node.js

Überprüfen Sie, welche Version Sie mit node -v

Sie führen wahrscheinlich brauchen hier die Kompatibilitätstabelle aktualisieren Check-out zu sehen, was sonst zur Verfügung:

Node Compatibility Table