Firebase 未在 Vue3 路由器中初始化
Firebase not initialized in Vue3 Router
我在 main.js 中初始化了 firebase,它在应用程序中整体运行。
当我在路由器中使用 firebase 进行 beforeEnter
检查时,它无法识别已初始化的 firebase。
异常:Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app).
查看日志,路由器 beforeEnter
检查在 main.js 完成初始化之前完成。
main.js:
firebase.initializeApp(firebaseConfig);
firebase.auth().onAuthStateChanged(function(user){...}
router.ts:
router.beforeEach((to, from, next) => {
console.log("router | beforeEach")
const currentUser = firebase.auth().currentUser;
const requiresAuth = to.matched.some(record => record.meta.requiresAuth);
if(requiresAuth && (!currentUser || currentUser.isAnonymous)) next('login')
else if(!requiresAuth && currentUser) next('eorDashboard')
else next();
})
如何绕过这个问题,因为它在 Vue2 中运行良好?
在您的 main.js
中,您应该确保仅在 Firebase Auth 对象准备好使用时才初始化 Vue 应用程序
main.js
let app = ''
firebase.initializeApp(firebaseConfig);
firebase.auth().onAuthStateChanged(() => {
if (!app) {
app = new Vue({
router,
render: h => h(App)
}).$mount('#app')
}
})
我在 main.js 中初始化了 firebase,它在应用程序中整体运行。
当我在路由器中使用 firebase 进行 beforeEnter
检查时,它无法识别已初始化的 firebase。
异常:Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app).
查看日志,路由器 beforeEnter
检查在 main.js 完成初始化之前完成。
main.js:
firebase.initializeApp(firebaseConfig);
firebase.auth().onAuthStateChanged(function(user){...}
router.ts:
router.beforeEach((to, from, next) => {
console.log("router | beforeEach")
const currentUser = firebase.auth().currentUser;
const requiresAuth = to.matched.some(record => record.meta.requiresAuth);
if(requiresAuth && (!currentUser || currentUser.isAnonymous)) next('login')
else if(!requiresAuth && currentUser) next('eorDashboard')
else next();
})
如何绕过这个问题,因为它在 Vue2 中运行良好?
在您的 main.js
中,您应该确保仅在 Firebase Auth 对象准备好使用时才初始化 Vue 应用程序
main.js
let app = ''
firebase.initializeApp(firebaseConfig);
firebase.auth().onAuthStateChanged(() => {
if (!app) {
app = new Vue({
router,
render: h => h(App)
}).$mount('#app')
}
})