AngularJS $inject 服务注入错误

AngularJS $inject error in service injection

我是 Angular 的新手,如果你能帮助我,我会很高兴。 我将我的逻辑拆分为 2 个文件(控制器和服务)。 我的服务代码:

(function () {
    'use strict';    
     angular
        .module('app', [])
        .factory('authservice', authservice);

    authservice.$inject = ['$http', '$logger'];

    function authservice($http, $logger) {
        return {
            signInOwner: signInOwner,
            signUpOwner: signUpOwner
        };

        function signInOwner(owner) {

        }

        function signUpOwner(owner) {

        }
    };
})();

我的控制器代码:

(function () {
  'use strict';

   angular
      .module('app', [])
      .controller('SignUpController', SignUpController);

   SignUpController.$inject = ['authservice'];

   function SignUpController (authservice) {
     var vm = this;
  }
})();

我在 controller.js 之前包含了我的 services.js,但仍然出现有关错误的 authservice 依赖项的错误

angular.js:14362 Error: [$injector:unpr]

你能帮帮我吗?

使用此语法 angular.module('app', []),您正在覆盖 模块创建。 您应该使用 angular.module('app') 来检索它。

[] 应该只使用一次:在创建模块时。


来自Angular module doc

Beware that using angular.module('myModule', []) will create the module myModule and overwrite any existing module named myModule. Use angular.module('myModule') to retrieve an existing module.

在您的控制器代码中替换:

angular
      .module('app', [])
      .controller('SignUpController', SignUpController);

对于

angular
      .module('app') // notice the lack of [] here!!
      .controller('SignUpController', SignUpController);

这是因为使用 [] 意味着您正在创建模块,没有它意味着您正在定位模块。由于该模块是在您创建服务时创建的,因此您无需再次创建它,只需找到它即可。