gpt4 book ai didi

javascript - 在angular js中发现循环依赖

转载 作者:行者123 更新时间:2023-12-04 00:46:34 24 4
gpt4 key购买 nike

试图为我的每个请求添加拦截器 header ,但是,它给我以下错误。

Uncaught Error: [$injector:cdep] Circular dependency found: $http <- Auth <- httpRequestInterceptor <- $http <- $templateRequest <- $route

应用程序.js

var app= angular.module('myDemoApp',['ngRoute'])


app.factory('httpRequestInterceptor', ['Auth', function (Auth) {
return {
request: function (config) {

config.headers['x-access-token'] = Auth.getToken();
return config;
}
};
}]);

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

授权服务

(function () {
'use strict';

myDemoApp.factory('Auth', ['$http', '$window', Auth]);

/******Auth function start*****/
function Auth($http, $window) {
var authFactory = {};

authFactory.setToken = setToken;
authFactory.getToken = getToken;
return authFactory;


/*setToken function start*/
function setToken(token) {

if (token) {
$window.localStorage.setItem('token', token);
} else {
$window.localStorage.removeItem('token');
}

}

/*getToken function start*/
function getToken() {
return $window.localStorage.getItem('token')
}

}


})();

最佳答案

你不能这样做,因为。

  1. 您已经创建了拦截所有 $http 请求的 httpRequestInterceptor

  2. 现在,您将在 httpRequestInterceptor 中传递 Auth

  3. 如果您将看到,Auth 在其内部使用 $http 请求。

  4. 因此,您的拦截器 本身可以使用Auth 引发http 请求。

因此,它的循环错误和 angularjs 不允许你这样做!

Auth 工厂中删除 $http 不要将服务插入本身使用 $http 的拦截器。

我希望你明白了,无限循环链是如何创建的,因此产生了一个循环依赖错误!

关于javascript - 在angular js中发现循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50760594/

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