Faz muito tempo que não escrevo vue, e hoje de repente cometi um pequeno erro fatal. O código é o seguinte:
routes.beforeEach((to, from, next) => {
if (sessionStorage.getItem('token')) {
next();
} else {
next('/login');
}
});
Parecia que estava tudo bem à primeira vista, mas caiu em um loop infinito, que finalmente fez a pilha transbordar.
Motivo: o endereço atual, que é o endereço / login, não foi excluído, o que causou uma chamada de loop.
A solução é a seguinte:
routes.beforeEach((to, from, next) => {
if (sessionStorage.getItem('token')) {
next();
} else {
//如果是登录页面路径,就直接next()
if (to.path === '/login') {
next();
} else {
next('/login');
}
}
});
Determine se é uma página de login e deixe-a ir, para que não haja um loop infinito.