2016-04-25 13 views
3

Я изучаю node.js и должен использовать readline для проекта. У меня есть следующий код непосредственно из readline module example.Node.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, были введены т o 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

Thank you! Это решило проблему. Извините, у меня нет достаточной репутации для повышения. Я нахожусь в окнах, а номер версии - 0.12.2, который кажется действительно старым по сравнению с 4.0.0. Но я не могу обновить его через npm (я нахожусь в Windows и использовал команду «npm install -g n»). Почему это? – user3700129

+0

У меня также были проблемы с обновлением с использованием самой npm в старых версиях, я не уверен, что вызвало это, но я тогда только что загрузил [последнюю версию с сайта node.js] (https://nodejs.org/en/download /) и установил его. (И тем временем я переключился на использование [Chocolatey] (https://chocolatey.org/), хороший менеджер пакетов для Windows, где речь идет о наборе 'cup nodejs.install' для обновления узла.) – CherryDT

+0

I просто установил его через choco. Это сработало отлично! – user3700129

0

The => синтаксис, известный как стрела функции, является относительно новой функцией JavaScript. Вам понадобится аналогичная новая версия Node, чтобы воспользоваться ею.

0

Обновите версию своего узла.

Arrow функции теперь работают в узле (версия 4.0.0) посмотреть здесь: ECMAScript 2015 (ES6) in Node.js

Проверьте, какую версию вы работаете с node -v

Вам, вероятно, необходимо обновить проверить таблицу совместимости здесь посмотреть, что еще имеется:

Node Compatibility Table

Смежные вопросы