在我的angularjs应用中,我对gulp使用esprima.js验证。而现在,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",我发现需要获取版本"istanbul": "^1.0.0-alpha.2"instanbul dependecy,然后我手动更改为版本1.0.0-alpha.2并调用npm i esprima。我这样做,但是抛出相同的错误。

是否有人知道如何解决此问题?

最佳答案

我建议使用BabelJS(https://babeljs.io/)。

Babel是将所有“新”功能转换为“旧” ES5代码的编译器(目标级别是可配置的,但我想在大多数情况下ES5都可以)

他们甚至有在线工具可以进行实时试用(https://babeljs.io/repl/

关于javascript - 从箭头功能(es6)到ES5,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50149553/

10-13 01:30