报错:vue-router.esm.js:2316 RangeError: Maximum call stack size exceeded

有时候写代码总会在vue中出现这样的错误:

        我们可以看到是路由页面出现了错误,大概意思是栈超出了最大容量,这种错误往往是因为代码中写的死循环导致的经过检查后发现,是因为路由守卫写错了出现的问题:

错误代码:

router.beforeEach((to, from, next) => {
    if (to.path == '/login') { next() }
    if (!localStorage.token) { next('/login') }
    next()
})

正确代码:

router.beforeEach((to, from, next) => {
    if (to.path == '/login') { return next() }
    if (!localStorage.token) { next('/login') }
    next()
})

        对比后我i们可以看到,是因为在第一次判断时少写了一个retuen导致的死循环,因为在第一次判断结束后,代码进入下一阶段,可是路由守卫却还在继续运行,形成了死循环,所以需要通过return来跳出函数,终止本次请求。

猜你喜欢

转载自blog.csdn.net/2301_77456141/article/details/132620571