AngularJS注入authFactory报[$injector:unpr]错误的解决方法
解决AngularJS注入authFactory时出现的[$injector:unpr]错误
嘿,我看了你的代码,这个错误其实是AngularJS依赖注入里两个常见的小问题导致的,咱们一步步来修复:
问题1:重复创建模块覆盖了你的authFactory
你在定义authFactory的时候,已经通过angular.module('login', [])创建了login模块。但在写控制器的时候,你又用了同样的语法angular.module('login', [])——这里的第二个空数组[]告诉AngularJS重新创建这个模块,而不是获取已经存在的模块,这就把你之前定义的authFactory给覆盖掉了,所以注入的时候自然找不到它。
修复方法
把控制器里的模块获取代码改成这样(去掉第二个参数[]):
(function () { 'use strict'; // 去掉[],获取已存在的login模块 angular.module('login').controller("LoginController", loginController) // ... })();
问题2:依赖注入数组里的authFactory缺少引号
在loginController.$inject这个注入数组里,你写的authFactory是一个未定义的变量,但AngularJS需要的是字符串形式的依赖名称。这就导致AngularJS无法识别你要注入的服务。
修复方法
把authFactory改成带引号的字符串'authFactory':
loginController.$inject = ['$cookies', '$log', '$scope', '$rootScope', '$q', '$location', '$timeout', '$window', 'authFactory']; function loginController($cookies, $log, $scope, $rootScope, $q, $location, $timeout, $window, authFactory) { // 你的控制器逻辑 }
把这两个地方修改完之后,再重新运行代码,应该就能成功注入authFactory了。
内容的提问来源于stack exchange,提问作者prasad
相关产品推荐
相关产品推荐

