路由版本:"vue-router": "^3.5.2",

添加了路由守卫,然后开始报这个错误,

原因就是路由版本导致的

解决办法

// 导航守卫限制路由跳转
router.beforeEach((to, from, next) => { 
	if (to.path === '/login') {
		next()
		var tokenStr = window.sessionStorage.getItem('token')
	}
	if (!tokenStr) {
		next()
	} else {
		next('/login')
	}
})
// router  要跟你引用的路由名称一致

路由版本3.2到3.0的话,应该可以用下面这个办法解决

1. 

//获取原型对象上的push函数
const originalPush = VueRouter.prototype.push
//修改原型对象中的push方法
VueRouter.prototype.push = function push(location) {
  return originalPush.call(this, location).catch(err => err)
}

2.

// 导航守卫限制路由跳转
router.beforeEach((to, from, next) => {
	if (!to.meta.isPublic && !localStorage.token){
		return next('/login')
	}
	next()
})

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐