未知提供者:现有Yeoman AngularFire用户服务的userProvider

时间:2016-09-21 17:00:08

标签: javascript angularjs dependency-injection angularfire yeoman-generator

我在Yeoman AngularFire应用程序中将服务注入控制器时遇到了一些麻烦。

这是我试图将user注入的控制器(由Yeoman生成器包含):

angular.module('myYoApp')
      .controller('ChatCtrl', function ($scope, user, Ref, $firebaseArray, $timeout) { ....

产生此Unknown provider错误:

angular.js:12798 Error: [$injector:unpr] Unknown provider: userProvider <- user <- ChatCtrl 

奇怪的是,它在我的自定义控制器中工作正常,允许在相关视图中访问用户。

angular.module('myYoApp')
  .controller('myCtrl', function ($scope, user, Auth, Ref, $firebaseArray, $firebaseObject, $timeout) { ....

我不知道为什么user服务可以在我的自定义控制器中注入,而不是在Yeoman生成的ChatCtrl中注入。我也查看了整个项目,似乎无法找到user服务的来源。但是,如果我的自定义服务可以使用它,它显然位于应用程序的某个位置。

我也尝试使用$user代替user,但这并没有解决它。 欢呼任何帮助搞清楚这一点!

1 个答案:

答案 0 :(得分:0)

好的。我设法解决了这个问题。这是routes.js的疏忽。 Yeoman angularfire-generator添加了内置路由安全/身份验证,该路由添加到路由中,以便在用户登录时轻松阻止其被访问。 因此,如果路由使用user代替$routeProvider.whenAuthenticated,则$routeProvider.when服务只能注入控制器。

常规不安全路线如下所示:

$routeProvider
      .when('/', {
        templateUrl: 'views/main.html',
        controller: 'MainCtrl'
      })

安全路线如下所示:

 $routeProvider
  .whenAuthenticated('/chat', {
        templateUrl: 'views/chat.html',
        controller: 'ChatCtrl'
      })