router.push的报错如何捕获?
router.push({ name: 'xxxxx',
})
跳转地址因为权限问题实际上在路由列表内是不存在的,直接报错
我使用了官方文档上的报错捕捉方法都未能捕捉报错,
const navigationResult = await router.push('/my-profile')if (navigationResult) {
// 导航被阻止
} else {
// 导航成功 (包括重新导航的情况)
this.isMenuOpen = false
}
import { NavigationFailureType, isNavigationFailure } from 'vue-router'
// 试图离开未保存的编辑文本界面
const failure = await router.push('/articles/2')
if (isNavigationFailure(failure, NavigationFailureType.aborted)) {
// 给用户显示一个小通知
showToast('You have unsaved changes, discard and leave anyway?')
}
好像是官网的方法都是捕捉正常跳转的报错,而我的场景是因权限问题导致的,跳转目标不存在,
Uncaught (in promise) Error: No match for {"name":"xxxxx","params":{}}
有没有谁知道怎么捕获这个报错,
我自己找到一个解决方法是在跳转前加个hasRoute判断下路由是否存在来避免这种报错场景,但还是没找到捕获报错的方法
回答:
router.push({}).catch(error => { console.log("报错了", error)
})
回答:
不清楚你的路由权限是怎么做的,但是,是否可以从检测要跳转页面的连通性来处理呢,可以参考一下我的文章:https://blog.i-xiao.space/pos...
回答:
可以使用router.hasRoute(name) 来进行判断当前路由是否存在;
hasRoute 这是文档地址;
以上是 router.push的报错如何捕获? 的全部内容, 来源链接: utcz.com/p/932926.html