vue-router跳转遇到 RangeError: Maximum call stack size exceeded 错误

问题代码:

// 设置导航守卫 有token 直接进入首页或指定的页面(无法进入登录页面)
router.beforeEach((to, from, next) => {
// 获取token
  const TOKEN = getToken()
  if (TOKEN) {
    if (to.name === 'Login') next('/home')
    else next()
  } else {
    // 没有token 只能访问登录页面 其它页面无法访问
    next('/login')
  }
})

按照理想状态 当没有token时页面应直接跳转到 login 页面

实际:
在这里插入图片描述
通过打印输出语句发现:
在这里插入图片描述
页面进入的死循环

查找资料将代码修改后:

// 设置导航守卫 有token 直接进入首页或指定的页面(无法进入登录页面)
router.beforeEach((to, from, next) => {
// 获取token
  const TOKEN = getToken()
  if (TOKEN) {
    if (to.name === 'Login') next('/home')
    else next()
  } else {
    // 没有token 只能访问登录页面 其它页面无法访问
   if (to.name === 'Login') next()
    else next('/login')
  }
})

运行
在这里插入图片描述
页面成功跳转

Logo

前往低代码交流专区

更多推荐