↓错误信息
Uncaught (in promise) Error: Infinite redirect in navigation guard at eval
↓main.js
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import store from './store/store'
import firebase from 'firebase';
import config from './firebase.config';
firebase.initializeApp(config);
const app = createApp(App); app.use(router); app.use(store); app.mount('#app');
router.beforeEach((to, from, next) => {
if (to.path === '/home') {
firebase.auth().onAuthStateChanged(user => {
if (user) {
next('/home')
} else {
next('/')
}
})
} else {
next();
} });
↓router.js
import { createRouter, createWebHistory } from 'vue-router';
import Login from './components/Login';
import SignUp from './components/SignUp';
import Home from './components/Home';
const router = createRouter({
history: createWebHistory(),
routes: [
{ path: '/', component: Login }, //Login screen path
{ path: '/signup', component: SignUp }, //New registration screen path
{ path: '/home', component: Home }, //Screen path after login
],
});
export default router;
如上所述,我试着自己写代码,但效果不太好。是更好地准备一个单独的标志,而不是检查用户信息与onauthstatechange ?如果你能教我,我会很感激🙇♂️
将next('/home')
更改为next()
原因:如果你使用next('/home')
,下面的代码将再次运行,并产生一个无限循环
router.beforeEach((to, from, next) => {
if (to.path === '/home') {
// this would be running again
...
}