ngAnnotate - 警告:StringMap期望的字符串键

iss*_*s42 14 javascript uglifyjs gruntjs ecmascript-6 ng-annotate

我在使用Gruntgrunt-ng-annotate时收到此警告.

警告中没有引用错误在文件中的位置,这使调试变得困难.

有任何想法吗?

iss*_*s42 25

问题原来是使用ES6表示法,在这种情况下是箭头函数(=>),默认参数和let.

我没有详细了解为什么ngAnnotate不支持这一点.

要查找的问题是我推翻了ngAnnotate警告与咕噜开关--force后来在构建丑化抱怨有更详细的ES6语法.

  • Thx,你救了我一些调试:)最好的解决方案恕我直言,用babel构建一切,并使用`babel-plugin-angularjs-annotate` (5认同)

小智 13

可能的原因:

  • () => {}
  • { value }
  • let
  • function (...args)
  • function (defaultVar = false)

解决方案:

  • function () {}
  • { value: value }
  • var
  • function (args)
  • function (defaultVar) { defaultVar = (defaultVar === undefined) ? false : defaultVar }


Mr.*_*ddy 5

我也面临同样的问题,但就我而言,存在另一个问题。

我们的一名团队成员已将function参数初始化为某个默认值。类似于以下内容。

$scope.functionName = function(defaultVar = false){ 
    //some code 
}
Run Code Online (Sandbox Code Playgroud)

在我的gulp脚本中,有一行

.pipe(plugins.if(release, plugins.ngAnnotate()))
Run Code Online (Sandbox Code Playgroud)

因此,当我删除此行时,构建脚本会在控制台中自动打印错误,指向错误所在的确切文件和行号。

最后,我能够通过删除该变量初始化代码来解决它。

希望这会帮助某人...

  • 谢谢!这也是我的根本原因。 (2认同)