'超出最大调用堆栈大小'VueJS路由

时间:2019-04-14 21:08:01

标签: node.js vue.js routing vue-router

基本上,router.beforeEach()方法正在做我不了解的事情。

我发现问题的关键在于,当我的路线重定向到/ login时,它将执行大约960次左右,直到发生错误为止。

我的代码如下:

路由器:

let router = new Router({
  mode: 'history',
  base: process.env.BASE_URL,
  routes: [
    {
      path:'/login',
      name: 'login',
      component: Login,
      meta: {
        requiresAuth: 'false'
      }
    },
    {
      path:'/register',
      name: 'register',
      component: Register,
      meta: {
        requiresAuth: 'false'
      }
    },
    {
      path: '/',
      name: 'home',
      component: Home,
      meta: {
        requiresAuth: 'True'
      }
    }
  ]
})

beforeEach()方法

router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAuth)) {

    console.log(to.matched.some(record => record.meta.requiresAuth))
    if (localStorage.getItem('jwt') == null) {
      next({
       path: '/login',
        params: { nextUrl: to.fullPath }
      })
    } else {
      next()
    }
  } else {
    if (localStorage.getItem('jwt') != null) {
      next({
        path: '/',
        params: { nextUrl: '/' }
      })
    } else {
      next()
    }
  }
})

我浏览了无数线程和其他地方,但没有一个跟我有同样的问题(或者我正在忽略事情)。任何人都知道如何解决,并且实际上正在发生什么使错误发生在其中?据我所知,我什么都没有命名两次,或者其他任何功能/组件都不应该启动。

2 个答案:

答案 0 :(得分:0)

解决了。我的脑袋有点特别。对于有相同问题的任何人,只需将路线更改为

routes: [
    {
        path: '/login',
        name: 'login',
        component: Login,
        meta: {
          requiresAuth: false
        }
    },
    {
      path:'/register',
      name: 'register',
      component: Register,
      meta: {
        requiresAuth: false
      }
    },
    {
      path: '/',
      name: 'home',
      component: Home,
      meta: {
        requiresAuth: true
      }
    }
  ]

答案 1 :(得分:0)

对于没有任何明显错误而遇到此错误的任何人,请尝试删除node_modules并再次运行npm install。 我在切换git分支时遇到了这个错误,唯一改变的是软件包,所以我尝试了上面的方法,摆脱了问题:)