javascript - AngularJS 将常量注入(inject)工厂时出现未知提供者错误

标签 javascript angularjs

我得到了一个 Angular unknown provider尝试注入(inject) constant 时出错进入factory正在被注入(inject) controller

angular.js:13920 Error: [$injector:unpr] Unknown provider: estimatingUtilitiesSettingsProvider <- estimatingUtilitiesSettings <- templateResolutionDataService

app.js:

angular
    .module('main', [
        'ngResource'
       , 'angulartics'
       , 'angulartics.appinsights'
       , 'envModule'
       , 'gettext'
       , 'webModule'
       , 'serviceModule'
    ])

  .controller('testPageController', [
      '$scope'
     , '$http'
     , '$resource'
     , 'envModule'
     , 'gettext'
     , 'templateResolutionDataService'
     , 'profileTemplateResolutionDataService'
     , 'templateResolutionDataWithMultipleTemplatesService'
     , 'partResolutionDataService'
     , 'featureToggleService'
     , 'recommendedResolutionDataService'
     , 'profiledResolutionDataService'
     , function ($scope, $http, $resource, envModule, gettext
         , templateResolutionDataService
         , profileTemplateResolutionDataService
         , templateResolutionDataWithMultipleTemplatesService
         , partResolutionDataService
         , featureToggleService, recommendedResolutionDataService
         , profiledResolutionDataService) {
     //contents
  }]);

templateResolutionDataService.js:

(function (angular) {
    'use strict';

    angular
        .module('serviceModule', [
               'webModule' 
        ])
        .factory('templateResolutionDataService', [
              'gettext'
            , 'estimateUtilitiesExtensionService'
            , 'partResDataServiceSettings'
            , 'estimatingUtilitiesSettings'


            , function (gettext, estimatingUtilitiesService
                , partResDataServiceSettings, estimatingUtilitiesSettings) {
            }
     ]);
})(window.angular);

webModule.js:

(function (angular) {
    'use strict';

    angular
        .module('webModule', [
            'ng'
            , 'ngResource'
            ,'miEnvironment'
            ,'gettext'
            ,'analyticsFilters'
            ,'touchEvents'
            ,'flyoutModule'
        ])
        .constant('estimatingUtilitiesSettings', {
            SourceKeys: {
                'Template': 1
                ,'Part': 2
            }
        });
})(window.angular);

我一直在调整继承顺序,但似乎并没有解决这个问题。有谁知道我做错了什么或者我如何识别和解决它?

编辑:注释掉常量的声明(并手动将其引用替换为适当的值)确实允许应用程序继续经过此点,因此关于 templateResolutionData.js这是阻止其执行的唯一因素。

最佳答案

我已经简化了您的代码并在 fiddle 上运行且没有错误。

    angular.module('main', ['webModule', 'serviceModule'])
  .controller('testPageController', [
    '$scope', '$http', 'templateResolutionDataService',
    function($scope, $http, templateResolutionDataService) {
      //contents
      $scope.setting = templateResolutionDataService;
    }
  ]);

(function(angular) {
  'use strict';

  angular.module('serviceModule', [
      'webModule'
    ])
    .factory('templateResolutionDataService', ['estimatingUtilitiesSettings',
      function(estimatingUtilitiesSettings) {
         var getSetting = function() {
          return estimatingUtilitiesSettings.SourceKeys;
        }

        return getSetting();
      }
    ]);
})(window.angular);

(function(angular) {
  'use strict';
  angular.module('webModule', [])
    .constant('estimatingUtilitiesSettings', {
      SourceKeys: {
        'Template': 1,
        'Part': 2
      }
    });
})(window.angular);

关于javascript - AngularJS 将常量注入(inject)工厂时出现未知提供者错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39879118/

相关文章:

javascript - 单击 'submit' 时将复选框值传递给 js

javascript - 在 WebDriver 中使用 sendKeys 时处理 Javascript 焦点

javascript - 为什么 $routeParams 未定义?

javascript - 我如何在 AngularJS 上从 Controller 调用服务上的函数

javascript - 使用 Lodash 对数字字符串数组进行排序

javascript - 使用javascript获取表单名称

javascript - 如何合并两个几乎相同的数组/对象(使用下划线js或类似的库)?

javascript - Angular jsonp 请求 coursera api 给出错误

javascript - 由于 TypeError : ngDialog. open 不是 Scope.$scope.discountModalOpen 的函数,无法使用 ngDialog?

javascript - 使用 ng-switch 构建切换