角度依赖项和提供程序不可用错误

Angular dependencies and provider not available error

本文关键字:程序 错误 依赖      更新时间:2023-09-26

我正在加载在Github 上找到的文件上传脚本

<script type="text/javascript" src="{% static 'bower_components/angular-file-upload/angular-file-upload.min.js' %}"></script>

并有一个数据导入模块:

(function () {
 'use strict';
  angular
    .module('TestSite.import', [
      'TestSite.import.controllers'
    ]);
  angular
    .module('TestSite.import.controllers', ['angularFileUpload']);
})();

以及控制器

(function () {
  'use strict';
  angular
    .module('TestSite.import.controllers' , ['angularFileUpload'])
    .controller('UploadController', UploadController);
  UploadController.$inject = ['$scope','angularFileUpload'];
  /**
  * @namespace UploadController
  */
  function UploadController($scope, FileUploader) {
    $scope.uploader = new FileUploader();
  };
})();

我收到一个错误

 Error: [$injector:unpr] Unknown provider: angularFileUploadProvider <- angularFileUpload

我对模块声明和DI感到困惑。为什么我需要声明模块TestSite.import.controllers两次?我正在注入正确的依赖项(angularFileUpload),但仍然会出现错误,还有什么是提供者,为什么angular找不到它?

看起来您混淆了文件上传服务的名称。正确的依赖项注入如下所示:

angular
    .module('TestSite.import.controllers')
    .controller('UploadController', UploadController);
UploadController.$inject = ['$scope', 'FileUploader'];
/**
 * @namespace UploadController
 */
function UploadController($scope, FileUploader) {
    $scope.uploader = new FileUploader();
};

还要注意,您不必重新定义模块TestSite.import.controllers。要访问已经注册的模块,您需要使用getter表示法,这意味着没有依赖数组作为第二个参数:

.module('TestSite.import.controllers').controller(...);