3 回答

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您在單個(gè) Firebase 應(yīng)用程序上調(diào)用initializeApp()
多次,通常會(huì)發(fā)生這種情況。如果您使用單個(gè) Firebase 數(shù)據(jù)庫,請確保在應(yīng)用啟動(dòng)時(shí)對其進(jìn)行初始化。

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
firebase.js的這個(gè)代碼片段應(yīng)該可以工作:
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
盡管此代碼片段并非特定于案例,但為了完整性起見,我決定將其包含在內(nèi)。
除了這個(gè)線程之外 - 一般來說,通常是在初始化 via 之前調(diào)用或多次調(diào)用Uncaught FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app).
的結(jié)果(例如Next.js可能會(huì)嘗試在后端以及前端初始化它 - 似乎是這種情況在您的代碼中)在您的 firebase 應(yīng)用程序中。firebase.
.initializeApp();
.initializeApp()
因此,作為解決方案,我強(qiáng)烈建議將初始化移動(dòng)到firebase.js文件,以便在應(yīng)用程序啟動(dòng)時(shí)直接初始化它。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
當(dāng)您在初始化 Firebase 之前嘗試訪問 Firestore 時(shí),通常會(huì)發(fā)生這種情況。因此,默認(rèn)情況下,我們可以檢查 firebase 是否已初始化,firebase.apps.length但每次都初始化 firebase 并不是一個(gè)好習(xí)慣。
因此,如果您只使用 firestore,那么在您的插件中,您可以在初始化后直接導(dǎo)出 firestore,如下所示,
import firebase from 'firebase/app'
const config = {
...
}
let app = null
if (!firebase.apps.length) {
app = firebase.initializeApp(config)
}
export default firebase.firestore()
但由于您使用的是 nuxt,因此有一個(gè)名為firebase/nuxt的特殊 nuxt 包
安裝后,您可以在模塊部分內(nèi)的 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.
}
}
]
],
我認(rèn)為這是在 nuxt.js 中使用 firebase 的更好方法
添加回答
舉報(bào)