Angular报错[$injector:unpr]:complianceServiceProvider找不到求助
解决AngularJS中[$injector:unpr] Unknown Provider错误(针对complianceService)
看起来你碰到了AngularJS依赖注入的典型问题,我帮你梳理下可能的原因和修复方案:
1. 最可能的原因:服务自执行函数未正确闭合
你的complianceService代码末尾只有}),但自执行函数需要})();才能触发执行——这意味着服务的注册代码根本没运行!Angular自然找不到这个服务。
修正后的服务代码应该是这样:
(function(){ angular.module('tasksModule') .service('complianceService', ComplianceService) function ComplianceService($log, $tasksApi) { var vm = this vm.get = get function get(filter){ $log.debug('Service - ComplianceService - get') return $tasksApi .then(function(v){ return v.$request().$get('compliance', filter) }) .then(Compliance) } function Compliance(resource) { return { resource : resource, tasks : resource.tasks } } } })(); // 这里必须加上(); 才能触发自执行
2. 检查脚本加载顺序
确保包含complianceService的脚本文件,早于加载ComplianceController的脚本引入到页面中。Angular需要先完成服务的注册,才能在控制器中注入它。
3. 验证依赖的可用性
确认$tasksApi这个依赖是已经正确注册的服务——如果$tasksApi本身找不到,会导致complianceService无法被实例化,间接引发这个错误。你可以暂时注释掉$tasksApi相关代码,测试服务是否能正常注入,来排除这个问题。
4. 推荐添加显式注入注解(避免压缩问题)
为了防止代码压缩时参数名被混淆导致注入失败,建议给控制器和服务添加显式的注入注解:
控制器示例:
angular.module('tasksModule') .controller('ComplianceController', ['$log', 'configService', 'scheduleService', 'dateTimeService', 'storeService', 'areaService', 'complianceService', ComplianceController]) function ComplianceController($log, configService, scheduleService, dateTimeService, storeService, areaService, complianceService) { // 你的控制器代码 }
服务示例:
angular.module('tasksModule') .service('complianceService', ['$log', '$tasksApi', ComplianceService]) function ComplianceService($log, $tasksApi) { // 你的服务代码 }
内容的提问来源于stack exchange,提问作者Sonhja
相关产品推荐
相关产品推荐

