由函数外部数组定义的指令引起的Angular itkn错误

hel*_*on3 7 angularjs angular-bootstrap

我正在使用Angular 1.3.15,也尝试过1.2.28,以及角度引导程序.昨晚,在将Chrome更新为v42.0.2311.90之后,我突然开始看到大量的角度itkn错误:

Error: [$injector:itkn] Incorrect injection token! Expected service name as string, got function ()
http://errors.angularjs.org/1.3.15/$injector/itkn?p0=function%20()
    at REGEX_STRING_REGEXP (angular.min.js?bust=undefined:63)
    at Object.invoke (angular.min.js?bust=undefined:4189)
    at angular.min.js?bust=undefined:6525
    at forEach (angular.min.js?bust=undefined:323)
    at Object.<anonymous> (angular.min.js?bust=undefined:6523)
    at Object.invoke (angular.min.js?bust=undefined:4204)
    at Object.enforcedReturnValue [as $get] (angular.min.js?bust=undefined:4056)
    at Object.invoke (angular.min.js?bust=undefined:4204)
    at angular.min.js?bust=undefined:4021
    at Object.getService [as get] (angular.min.js?bust=undefined:4162)
Run Code Online (Sandbox Code Playgroud)

这在更新Chrome之前没有发生,但我想我不能说这肯定是相关的.

经过深思熟虑后,我发现任何定义的指令都是这样的:

  .directive('modalTransclude', function () {
    return {
      // directive code
    };
  })
Run Code Online (Sandbox Code Playgroud)

会导致此itkn错误.我在控制台key中记录了$inject迭代器中的角度,它返回了指令本身的功能,而不仅仅是明确意图的字符串.

我发现将函数包装在一个数组中,即使没有定义注入的任何字符串,它也解决了这个问题:

  .directive('modalTransclude', [function () {
    return {
      // directive code
    };
  }])
Run Code Online (Sandbox Code Playgroud)

但是,角度引导程序站点上没有发生此错误,我在角度1.3和1.2版本上都尝试过这种错误.

我将继续寻找我的应用程序独有的任何原因,但有没有人知道是什么导致了这个?

Ego*_*nov 7

如果您在chrome中安装了ng-inspector.org扩展,则可能是一个原因.只需关闭ng-inspector浏览器扩展即可.

我不知道为什么它目前不与ng-inspector合作的确切原因.如果有人有时间研究这个问题,那么将bug提交给涉及的项目会很好(我怀疑它是ng-inspector本身).