2016-02-22 3 views
42

Я хочу, чтобы преобразовать этот код:функция Стрелка «выражение ожидается» ошибка синтаксиса

var formatQuoteAmount = function (tx) { 
    return Currency.toSmallestSubunit(tx.usd, 'USD'); 
}; 
var quoteAmounts = res.transactions.map(formatQuoteAmount); 

в анонимную функцию стрелки. Я написал это:

var quoteAmounts = res.transactions.map(tx => Currency.toSmallestSubunit(tx.usd, 'USD')); 

Я получаю expression expected синтаксическую ошибку на стрелку. Я посмотрел the default syntax here и кажется, что синтаксис моего кода верен. Есть идеи, что может быть проблемой?

У меня он работает с этим синтаксисом:

var quoteAmounts = res.transactions.map(function (tx) { 
     return Currency.toSmallestSubunit(tx.usd, 'USD') 
    }); 

, но я хочу, чтобы сделать его один вкладыш, со стрелкой-функции.

Бег на node v5.3.0

+1

что это за сбор/вывод его 'console.log (res.transactions);' – Jai

+1

В какой среде вы его запускаете? – nils

+0

@nils, в 'node.js'. Я обновил теги OP. – Milkncookiez

ответ

95

У меня была ошибка expression expected, указанная Webstorm при редактировании программы Node.js. В этом случае решение должно установить версию языка для версии, поддерживающей эту функцию.

enter image description here

+12

Изменен в ECMAScript 6, но я все еще получаю эту ошибку в строке - 'var text = entity.name.split (" ") .filter (s => s);' (предназначенный для разделения строки, избежания пустых результатов). Любая идея, как его решить? – Itai

+0

Я получаю эту проблему, и мне нужно пойти и переключить эту версию языковой версии с ES6 на что-то еще, а затем обратно.Действительно раздражает. – greg

+0

Это также работало в PHPStorm для моего проекта nodejs. Как вы уже указали, этот параметр является настройкой JavaScript (находится в Javascript, а не nodejs). –

0

Вашего синтаксиса является правильным и Nodejs поддерживает функцию стрелок, но она не включен по умолчанию.

При запуске процесса узла вы должны добавить флаг «--harmony», чтобы включить его.

+1

Зачем нужен downvote? – sitifensys

+0

Функции стрелки [включены по умолчанию] (https://nodejs.org/en/docs/es6/#which-features-ship-with-node-js-by-default-no-runtime-flag-required) – McMath

+1

https://nodejs.org/ru/docs/es6/#which-features-ship-with-node-js-by-default-no-runtime-flag-required говорит, что функции стрелок не требуют флага времени выполнения. :) – Milkncookiez

11

Ниже то, что я сделал эту работу для меня. (1) Я меняю вариант языка JavaScript на ECMAScript 6 как показано в выбранном ответе от @ Joe23

(2) Я закрываю проект/приложение Webstorm.

(3) Перейдите в папку проекта и удалите в ней папку .idea. Я считаю, что это папка webstorm, сгенерированная для хранения информации о проекте/приложении.

(4) Я снова открываю свой проект в webstorm и ошибки исчезли.

+1

Я пробовал это и нашел дополнительный аспект. НЕ настраивайте это в меню «Файл»> «Настройки по умолчанию», так как это влияет только на новые проекты. Вместо этого вы ДОЛЖНЫ изменить его в Webstorm> Preferences> Languages ​​and Frameworks -> Javascript. И не забудьте нажать «Применить»! Раздражающие, бессмысленные, бесцельные ошибки, подобные этому (почему WebStorm использует ECMAScript 5.1 как значение по умолчанию, когда существует 6.0, и его синтаксис настолько распространен?) Являются причиной того, что я так часто возвращаюсь к Visual Studio и C# - хотя я уверен любой разработчик скажет, что в пользу их самой известной IDE и языка. – user3685427