有时候写代码总会在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来跳出函数,终止本次请求。