当遇到Uncaught (in promise) Error: Infinite redirect in navigation guard at vue-router.mjs:3178:47怎么更改axios响应拦截器代码,utils/request.js
时间: 2024-11-05 09:32:50 浏览: 125
当你遇到 "Infinite redirect" 错误,这通常发生在Vue Router的导航守卫(navigators)中,因为某个路由尝试无限循环跳转。在处理axios响应拦截器(如在 utils/request.js 文件中)时,你需要检查并阻止这种无限循环。
首先,确保你在axios拦截器中添加了对错误的处理。如果错误是关于重定向过多,你可以尝试修改代码如下:
```javascript
// utils/request.js
import axios from 'axios';
import { useRouter } from 'vue-router';
const instance = axios.create({
// 其他配置选项...
});
instance.interceptors.response.use(
response => {
// 成功响应处理
return response.data;
},
error => {
const router = useRouter(); // 获取当前router实例
if (error.response && error.response.status === 302 || error.response.status === 301) {
// 如果是重定向且未达到最大限制(例如5次),更新路径并继续请求
if (!error.options.redirectedCount || error.options.redirectedCount < 5) {
error.options.redirectedCount++;
router.push(error.response.headers.location);
} else {
// 超过最大限制,抛出原错误
throw new Error('Infinite redirect detected');
}
} else {
// 非重定向错误,直接抛出
throw error;
}
}
);
export default instance;
```
在这个例子中,我们增加了对`response.status`为301或302的判断,并限制了重定向次数。当达到最大次数时,会捕获这个错误并显示"Infinite redirect detected"。
阅读全文