You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:39:03