2016-04-25 57 views
3

我正在學習node.js,並且需要使用readline作爲項目。我有以下代碼直接從readline module exampleNode.js 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 
+3

你正在使用什麼版本的節點?可能是不支持ES6箭頭語法的。 – Tushar

+1

升級你的節點 – DININDU

+0

由於你的問題似乎已經解決,如果你能接受最好的答案,那將是非常好的。 – CherryDT

回答

8

Arrow functions,的ECMAScript 6 standard的新功能之一,被面市的T node.js(作爲穩定功能)僅限於version 4.0.0

你可以升級你的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(); 
}); 

(請注意,有那些語法之間多了一個區別:this變量的行爲不同。這個例子並不重要,但可能在其他例子中。)

+0

謝謝!這解決了問題。對不起,我沒有足夠的信譽來upvote。我在Windows上,版本號是0.12.2,與4.0.0相比,它看起來很老。但我似乎無法通過npm升級它(我在Windows上並使用命令「npm install -g n」)。這是爲什麼? – user3700129

+0

我也有麻煩升級使用npm本身在舊版本,我不知道是什麼造成了它,但我剛剛下載[最新版本從node.js網站](https://nodejs.org/en/download /)並安裝它。 (同時,我轉而使用[巧克力](https://chocolatey.org/),這是一個很好的Windows包管理器,在這裏輸入'cup nodejs.install'來升級節點。) – CherryDT

+0

I只是通過choco安裝它。它非常完美! – user3700129

0

=>語法,被稱爲Arrow功能,是一個相對較新的功能JavaScript的。您將需要一個類似的新版本的節點來利用它。