我有关于angular的app.js文件,我想添加一个响应拦截器但是当我添加响应拦截器时它会在控制台上抛出一个错误
未捕捉错误:[$ injector:modulerr]
以下是文件
(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);
});
};
});
}());
任何人都可以指导我导致此问题的原因。
答案 0 :(得分:0)
您没有定义角度模块构建器'任何地方。以下格式(您的文件使用):
angular.module("builder")
意味着,"使用角度模块' builder'我已经定义了。"
以下格式:
angular.module("builder",[])
意味着,"创建角度模块' builder'在这里和现在(并消除任何以前的)"。
你可以同时创建和使用:
angular.module("builder",[]).config(....
但你必须至少在某个地方定义它。
答案 1 :(得分:0)
您的工厂应更改如下:
.factor('responseObserver', '$window', function responseObserver($window, $q){
});
注意我注入$window
的方式。您必须注释$ window,以便注入器可以识别要注入的函数/指令/服务。