ngAnnotate - 警告:StringMap 需要字符串键

ngAnnotate - Warning: StringMap expected string key

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

警告中没有提到错误在文件中的位置,这使得调试变得困难。

有什么想法吗?

问题原来是使用了 ES6 符号,在本例中是箭头函数 (=>),default 参数和 .

我没有详细了解为什么 ngAnnotate 不支持这个。

为了找到问题出在哪里,我用 grunt switch --force 覆盖了 ngAnnotate 警告,后来在构建 uglify 中抱怨了 ES6 语法的更多细节。

我也遇到了同样的问题,但我的情况不同。

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

$scope.functionName = function(defaultVar = false){ 
    //some code 
}

在我的 gulp 脚本中,有一行

.pipe(plugins.if(release, plugins.ngAnnotate()))

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

最后,我通过删除变量初始化代码解决了这个问题。

希望这会对某人有所帮助...

可能的原因:

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

解决方案:

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

我也遇到了由解构赋值引起的类似问题:

// the following line broke the build
const { name, gender, yearOfBirth, occupation } = profile;