Angular服务调用出现[$injector:unpr]错误,请求技术指导
解决Angular [$injector:unpr] 依赖注入错误
嘿,这个[$injector:unpr]错误我太熟了——本质就是Angular的依赖注入器找不到你声明要注入的依赖项,看你贴的代码,问题很明显,咱们一步步来解决:
1. 补全控制器的依赖注入声明
你贴的控制器代码明显截断了:app1.controller("HomeController", ['$scope', 'API...,这里应该是要注入你定义的APIService但没写完整。这是最直接的问题,补全后的控制器代码应该是这样:
app1.controller("HomeController", ['$scope', 'APIService', function($scope, APIService) { // 举个例子,调用服务的getSkill方法 APIService.getSkill(123) .then(function(response) { $scope.userSkills = response.data; }) .catch(function(error) { console.error('获取技能评分失败:', error); }); }]);
注意:数组里的字符串'APIService'必须和你定义的服务名称完全一致,后面的函数参数名也要对应上(用这种数组式注入,就算之后压缩代码也不会出问题,因为Angular是靠数组里的字符串来识别依赖的)。
2. 优化服务的注入方式(可选但推荐)
你的服务定义里注入了$http,虽然未压缩时能正常运行,但如果之后要压缩代码,参数名会被混淆,导致注入失败。最好也改成数组式注入:
app1.service('APIService', ['$http', function ($http) { this.getSkill = function (userid) { return $http({ url: "api/GetSkillRating", method: "GET", params: { userid: userid } }); } }]);
3. 确认页面加载和模块引用
最后再检查一下页面的基础配置:
- 确保页面里先加载
angular.min.js,再加载你写的这个脚本文件; - HTML里的
ng-app指令要正确指向你的模块homeapp,比如:
<div ng-app="homeapp" ng-controller="HomeController"> <!-- 你的页面内容 --> </div>
基本上做完这几步,这个[$injector:unpr]错误就应该消失了。
内容的提问来源于stack exchange,提问作者user520244
相关产品推荐
相关产品推荐

