Vue.js Vue路由器:从axios拦截器路由后的空白页
在我的Vue.js Vue路由器:从axios拦截器路由后的空白页,vue.js,axios,vue-router,Vue.js,Axios,Vue Router,在我的axios.config.js文件中,我有一段代码: axios.interceptors.response.use( config => config, error => { if (error && error.message === "Network Error") { if (router.currentRoute.name !== "login") { router.push({
axios.config.js文件中,我有一段代码:
axios.interceptors.response.use(
config => config,
error => {
if (error && error.message === "Network Error") {
if (router.currentRoute.name !== "login") {
router.push({
name: "errorPage",
query: { template: "NoConnection" }
});
}
} else if (error && error.response && error.response.status === 401) {
Vue.auth.logout().then(() => {
router.push({
name: "login"
});
});
} else if (
error &&
error.config.hasOwnProperty("errorHandle") &&
error.config.errorHandle === false
) {
return Promise.reject(error);
} else {
_notifyError(error);
}
return Promise.reject(error);
}
);
当我得到401状态代码时,将调用正确的代码,路由将更改为:http://localhost:8080/#/error_page?template=UnAuthorized
但是页面是空白的。如果我刷新,我会看到错误页面
我的路线:
{
path: "/error_page",
name: "errorPage",
component: ErrorPage
},
有什么想法吗?尝试更改您的路由器。将对象推到
router.push({
path: "errorPage",
query: { template: "NoConnection" }
});
只能在路由器内使用查询
。当指定路径
时推送
对象,否则如果使用名称
,则必须改用参数
如果这不太管用,试试看
router.push({
name: "errorPage",
params: { template: "NoConnection" }
});
{
path: "/error_page/:templateName",
name: "errorPage",
component: ErrorPage
},
然后在错误页面中
获取带有$router
关键字的模板名
参数。尝试更改路由器。将对象推到
router.push({
path: "errorPage",
query: { template: "NoConnection" }
});
只能在路由器内使用查询
。当指定路径
时推送
对象,否则如果使用名称
,则必须改用参数
如果这不太管用,试试看
router.push({
name: "errorPage",
params: { template: "NoConnection" }
});
{
path: "/error_page/:templateName",
name: "errorPage",
component: ErrorPage
},
然后在ErrorPage
中,使用$router
关键字获取templateName
参数。不熟悉axios,但错误回调不应该返回承诺吗?请尝试返回Vue.auth.logout()。然后…
。您可以显示您的路由配置吗?不熟悉axios,但错误回调不应该返回承诺吗?请尝试返回Vue.auth.logout()。然后…
。您可以显示路由配置吗?params
和query
是两种不同的东西,我使用它的方式是正确的。我看到路由更改为正确的路由,它只是没有显示任何内容。查看Vue路由器文档,在编程导航中,query
关键字与path
一起使用,这可能会影响路由导航。请显示您的主要组件(您在其中添加了路由器视图
)和错误页面
组件,好吗?这只是一个示例,它并不意味着这是唯一的方法,也不意味着它在其他任何地方都可以显示。无论如何,它在路由方面是有效的,它路由到正确的位置。我只是测试它,它在我的项目中工作,我没有得到一个空白页。这可能是您的ErrorPage
组件内部的一个问题,如果不是,我不知道,实际上这是一个重定向问题。只有当我从oktaparams
和query
这样的外部应用程序重定向时,才会发生这种情况。这是两种不同的东西,我使用它的方式是正确的。我看到路由更改为正确的路由,它只是没有显示任何内容。查看Vue路由器文档,在编程导航中,query
关键字与path
一起使用,这可能会影响路由导航。请显示您的主要组件(您在其中添加了路由器视图
)和错误页面
组件,好吗?这只是一个示例,它并不意味着这是唯一的方法,也不意味着它在其他任何地方都可以显示。无论如何,它在路由方面是有效的,它路由到正确的位置。我只是测试它,它在我的项目中工作,我没有得到一个空白页。这可能是您的ErrorPage
组件内部的一个问题,如果不是,我不知道,实际上这是一个重定向问题。只有当我从okta这样的外部应用重定向时才会发生这种情况