vue路由 Maximum call stack size exceeded

1.问题:在Vue项目开发中遇到根据登录来判断页面跳转时遇到死循环的问题。

2.错误代码如下:

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})
const token = store.getters.getToken
router.beforeEach((to, from, next) => {
  
  if (!token) {
    next({ name: 'error' })
  }
  // 有权限
  next()
})
export default router

3.解决办法如下

router.beforeEach((to, from, next) => {
  const excludePath = ['error']
  if (!token && excludePath.indexOf(to.name) === -1) {
    next({ name: 'error' })
  }
  // 有权限
  next()
})

总结:在使用路由守卫时,需有相应的结束条件,否则会一直循环下去。


版权声明:本文为Kratial原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。