gpt4 book ai didi

javascript - 不能推送拦截器

转载 作者:行者123 更新时间:2023-11-29 21:59:37 25 4
gpt4 key购买 nike

在 angular js 中,我做了一个应该验证用户身份的服务,它存储一个 token 并在每个请求中发送它,所以我使用了拦截器。她是拦截器的代码。

app.factory('authInterceptorService',['$q', '$location', '$cookieStore', function( $q, $location, $cookieStore){
var authInterceptorServiceFactory = {};
var _request = function(config){
config.headers = config.headers || {};
var authData = $cookieStore.get('AuthorizationHeader');
if(authData){
config.headers.AuthorizationHeade = authData.token;
}
return config;
}

var _responseError = function(rejection) {
if(rejection.status === 401){
$location.path('/');
}
return $q.reject(rejection);
}
authInterceptorServiceFactory.request = _request;
authInterceptorServiceFactory.responseError = _responseError;
return authInterceptorServiceFactory;
}]);

问题是当我尝试添加拦截器时

app.config(function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptorService');
});

我收到未捕获的类型错误:无法从 AccApp 读取未定义的属性“推送”

最佳答案

您提到的错误消息表明 $httpProvider 参数可能未正确注入(inject)。也许您使用某种混淆来更改变量名称并破坏注入(inject)机制。请尝试更改:

app.config(function ($httpProvider) { ... }); 

进入:

app.config(["$httpProvider", function ($httpProvider) { ... }]);

如果这能解决问题,请告诉我。

编辑

经过评论的简短讨论,似乎是AngularJS版本太旧导致的错误。根据此链接,为了使用 interceptors 集合,至少需要 1.1.4 版本:AngularJS $httpProvider undefined .

编辑二

升级angularjs版本后问题解决了,但是又出现了一个问题,看来是你自己解决的:)。按照约定,我将有关它的信息添加到答案中。根据我们的讨论,ngRoute 必须在升级 angularjs 版本后包含在内,尽管在版本 1.0.7 中代码在没有它的情况下也能正常工作。

关于javascript - 不能推送拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24541630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com