3 回答

TA貢獻2021條經驗 獲得超8個贊
如果您在單個 Firebase 應用程序上調用initializeApp()
多次,通常會發生這種情況。如果您使用單個 Firebase 數據庫,請確保在應用啟動時對其進行初始化。

TA貢獻1804條經驗 獲得超8個贊
firebase.js的這個代碼片段應該可以工作:
import fb from "firebase/app"
export const firebase = !fb.apps.length ? fb.initializeApp(firebaseConfig) : fb.app()
// somecomponent.js
import {firebase} from "../firebase.js"
// do your firebase stuff here
盡管此代碼片段并非特定于案例,但為了完整性起見,我決定將其包含在內。
除了這個線程之外 - 一般來說,通常是在初始化 via 之前調用或多次調用Uncaught FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app).
的結果(例如Next.js可能會嘗試在后端以及前端初始化它 - 似乎是這種情況在您的代碼中)在您的 firebase 應用程序中。firebase.
.initializeApp();
.initializeApp()
因此,作為解決方案,我強烈建議將初始化移動到firebase.js文件,以便在應用程序啟動時直接初始化它。

TA貢獻1820條經驗 獲得超9個贊
當您在初始化 Firebase 之前嘗試訪問 Firestore 時,通常會發生這種情況。因此,默認情況下,我們可以檢查 firebase 是否已初始化,firebase.apps.length但每次都初始化 firebase 并不是一個好習慣。
因此,如果您只使用 firestore,那么在您的插件中,您可以在初始化后直接導出 firestore,如下所示,
import firebase from 'firebase/app'
const config = {
...
}
let app = null
if (!firebase.apps.length) {
app = firebase.initializeApp(config)
}
export default firebase.firestore()
但由于您使用的是 nuxt,因此有一個名為firebase/nuxt的特殊 nuxt 包
安裝后,您可以在模塊部分內的 nuxt config 中定義您的配置,如下所示,
modules: [
[
'@nuxtjs/firebase',
{
config: {
apiKey: '<apiKey>',
authDomain: '<authDomain>',
databaseURL: '<databaseURL>',
projectId: '<projectId>',
storageBucket: '<storageBucket>',
messagingSenderId: '<messagingSenderId>',
appId: '<appId>',
measurementId: '<measurementId>'
},
services: {
auth: true // Just as example. Can be any other service.
}
}
]
],
我認為這是在 nuxt.js 中使用 firebase 的更好方法
添加回答
舉報