未捕获的错误: [$injector:模块rr]

Uncaught Error: [$injector:modulerr]

本文关键字:injector 模块 rr 错误      更新时间:2023-09-26

我有以下 app.js 文件用于角度,我想添加一个响应拦截器,但是当我添加响应拦截器时,它会在控制台上抛出错误

未捕获的错误: [$injector:模块rr]

下面是文件

(function () {
        "use strict";
        angular.module("builder").config(["$stateProvider", "$urlRouterProvider", "$locationProvider", "$provide","$httpProvider",
                function ($stateProvider, $urlRouterProvider, $locationProvider, $provide, $httpProvider) {
                    $httpProvider.responseInterceptors.push('responseObserver');
    }]).factory('responseObserver',
                function responseObserver($q, $window) {
            return function (promise) {
                return promise.then(function (successResponse) {
                    return successResponse;
                }, function (errorResponse) {
                switch (errorResponse.status) {
                case 401:
                    $window.location = $window.location;
                    break;
                case 403:
                    $window.location = './403.html';
                    break;
                  case 500:
                    $window.location = './500.html';
               }
               return $q.reject(errorResponse);
              });
            };
        });
    }());

谁能指导我导致此问题的原因。

你没有在任何地方定义角度模块"构建器"。以下格式(您的文件使用):

angular.module("builder")

意思是,"使用我已经定义的角度模块'构建器'。

以下格式:

angular.module("builder",[])

意思是,"此时此地创建角度模块'构建器'(并消除任何以前的模块)"。

您可以同时创建和使用:

angular.module("builder",[]).config(....

但是您必须至少在某处定义一次。

您的工厂应该像下面这样更改:

.factor('responseObserver', '$window', function responseObserver($window, $q){
});

注意我注入$window的方式.您必须注释$window,以便注入器可以识别要注入的功能/指令/服务。