От функции СТРЕЛКА (es6) к ES5 - PullRequest
0 голосов
/ 03 мая 2018

в моем приложении angularjs я использую проверку esprima.js с gulp. И теперь, esprima выдает мне ошибку для этих двух частей js.

internal/streams/legacy.js:59
  throw er; // Unhandled stream error in pipe.
  ^

Ошибка: строка 38843: неожиданный идентификатор

Это первый кусок

var filteredCampaignItems = campaignItems.filter((thing, index, self) => index === self.findIndex((t) => (
              t.expectedAdvertisementDisplayCount === thing.expectedAdvertisementDisplayCount && t.smartId === thing.smartId
            ))
          )

и второй фильтр для суммы

app.filter('sumProduct', function() {
return function (input) {
var i = input instanceof Array ? input.length : 0;
var a = arguments.length;
if (i === 0)
  return i;
var total = 0;
for(var x of input){
  var duration = parseFloat(x.meta_duration);
  if(isNaN(duration)){
      throw 'filter sumProduct can count only numeric values';
  }
  total += duration;
}
return total;
}
});

Версия Esprima "version": "4.0.0", и я обнаружил для зависимости instanbul , что мне нужно получить версию "istanbul": "^1.0.0-alpha.2", и я вручную переключаюсь на версию 1.0.0-alpha.2 и вызываю npm i esprima. Я делаю это, но та же ошибка - бросить.

Есть кто-то, кто знает, как это исправить?

1 Ответ

0 голосов
/ 03 мая 2018

Рекомендую использовать BabelJS (https://babeljs.io/).

Babel - это компилятор, который преобразует все «новые» функции в «старый» код ES5 (целевой уровень настраивается, но я думаю, что в большинстве случаев ES5 подходит)

У них даже есть онлайн-инструмент, чтобы попробовать его вживую (https://babeljs.io/repl/)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...