一尘不染

AngularJS错误:未知提供程序:aProvider <-a

angularjs

好吧,在我开始解决这个臭名昭著的问题之后,现在我正式秃头了:缩小的AngularJS应用程序无法正常工作,并抛出了以下错误:

错误:[$ injector:unpr]未知提供程序:aProvider <-a
http://errors.angularjs.org/1.2.6/ $
injector / unpr?p0 = aProvider%20%3C-%20a位于http:// localhost /my-
app/dist/scripts/1bde0e2e.vendor.js:4:11492,
位于http://localhost/my-
app/dist/scripts/1bde0e2e.vendor.js:4:26946,
位于Object.c [获得]
http://localhost/my-
app/dist/scripts/1bde0e2e.vendor.js:4:26250
)位于http://localhost/my-
app/dist/scripts/1bde0e2e.vendor.js:4:27041
位于c(http://localhost/my-
app/dist/scripts/1bde0e2e.vendor.js:4:26250
)at Object.d [作为调用](http://
localhost / my-app / dist / scripts / 1bde0e2e
.vendor.js:4:26496
http://localhost/my-
app/dist/scripts/1bde0e2e.vendor.js:9:910
at Object.f [as
forEach](http://localhost/my-app/dist/scripts/1bde0e2e.vendor。
js:4:11927
),位于http://localhost/my-
app/dist/scripts/1bde0e2e.vendor.js:9:856,
位于j(http://localhost/my-
app/dist/scripts/1bde0e2e.vendor .js:5:27235

许多其他人也有这个问题,但是看起来可以通过将依赖项声明为数组而不是裸函数参数来解决,如下所示:

angular.module('my-app').controller('LoginCtrl', [ '$scope', 'HttpService', function($scope, HttpService) { ... }]);

代替这个:

angular.module('my-app').controller('LoginCtrl', function($scope, HttpService) { ... });

但这对我来说不起作用。我检查了所有脚本(咖啡和生成的javascript),它们都使用正确的数组样式声明。

这个问题显然不是来自额外的软件包。我尝试将所有额外的程序包引用移出<!-- bower:js -->块(这样它们就不会被grunt缩小),但是问题仍然存在。这意味着,这应该归咎于我的代码…但是,再次,我尝试了(似乎是)仅可用的修复程序,但无济于事。

有任何提示,即使如何正确调试也是如此?

提前致谢!


阅读 215

收藏
2020-07-04

共1个答案

一尘不染

终于我找到了问题所在。是的,这是我错过的DI错误。

对于所有可能同样感到头痛的人:数组格式声明也必须在$routeProviderresolve选项中完成。就我而言(前面的CoffeeScript):

app.config (['$routeProvider', ($routeProvider) ->
  $routeProvider
    .when '/',
      templateUrl: 'views/main.html'
      controller: 'MainCtrl'
      resolve: 
        groups: ['GroupService', (GroupService) ->  # I MISSED THIS
          return GroupService.getAll()
        ]
        entries: ['EntryService', (EntryService) ->  # AND THIS
          return EntryService.getAll()
        ]
    # ...
])

希望这可以帮助!

2020-07-04