Ich habe ein Projekt basierend auf https://github.com/zeit/next.js/tree/v3-beta/examples/with-firebase gestartet
Der Fehler, den ich beim Importieren von Firebase in mehr als einer Komponente habe.
In dieser Firebase-Startdatei:
`Firebase von 'firebase' importieren
const firebaseConfig = {
apiKey: "fdsfsdfdsf",
authDomain: "fdsfdsfsdfdsf",
DatenbankURL: "sdfdsfdsf",
Projekt-ID: "dsfdsfdsf",
SpeicherBucket: "dsfdsfdsf",
MessagingSenderId: "dsfdsfsdfdsf"
}
const FbApp = firebase.initializeApp(firebaseConfig)
Standard-FbApp.auth() exportieren`
Dann in den Komponenten:
import firebase from '../lib/firebaseClient'
Mit einer einzelnen Komponente funktioniert es gut, aber wenn ich eine neue Komponente mit import firebase from '../lib/firebaseClient'
hinzufüge,
Firebase: Firebase App namens '[DEFAULT]' existiert bereits (App/Duplikat-App).
FirebaseError: Firebase: Firebase App namens '[DEFAULT]' existiert bereits (App/Duplicate-App).
Sie können firebase.apps
überprüfen, um zu sehen, ob es geladen ist. Wenn Sie es nur einmal laden, können Sie einfach die Länge überprüfen. Wenn Sie mehrere haben, können Sie den Namen jeder App überprüfen.
if (!firebase.apps.length) {
firebase.initializeApp({});
}
Die Lösung:
`Firebase von 'firebase' importieren
Versuchen {
firebase.initializeApp({
DatenbankURL: 'dfgdfg'
})
} fangen (irren) {
// wir überspringen die "bereits vorhanden"-Nachricht, die ist
// kein tatsächlicher Fehler beim Hot-Reload
if (!/bereits vorhanden/.test(err.message)) {
console.error('Firebase-Initialisierungsfehler', err.stack)
}
}
const fb= Firebase
export default fb`
Das Problem ist darauf zurückzuführen, dass die initialize-Methode von Firebase mehr als mehrmals aufgerufen wird. ich hatte das gleiche Problem. und ich könnte es beheben, indem ich den initialize-Methodenaufruf mehr als einmal einschränke. Machen Sie die Firebase-Konfigurationen in einer Klasse und machen Sie es als Singleton-Klasse.
Ich bin neu bei Firebase und ein neuer Webentwickler. Ich hatte dieses Problem. Mein Problem wurde durch das Verknüpfen meiner Javascript-Datei sowohl im Head als auch im Body meiner HTML-Datei verursacht. Ich hatte speziell sowohl Firebase- als auch js-Skript-Tags im HTML-Kopf und ein weiteres js-Skript-Tag am Ende des Body-Tags. Meine Lösung bestand darin, alle Skript-Tags aus dem Kopf zu löschen und sie am unteren Rand des Körpers zu platzieren.
Das ist meine Lösung:
// Config file
import * as firebase from "firebase";
const config = {...};
export default !firebase.apps.length ? firebase.initializeApp(config) : firebase.app();
// Other file
import firebase from '../firebase';
...
console.log(firebase.name);
console.log(firebase.database());
Geniale Lösung! @Purii
@Purii Du hast gerade meinen Tag gerettet
Wenn Sie Firestore verwenden, verwenden Sie:
export default !firebase.apps.length
? firebase.initializeApp(config).firestore()
: firebase.app().firestore();
@jide danke
Ich musste auch import 'firebase/firestore';
import * as firebase from 'firebase'
import 'firebase/firestore';
const config = {
apiKey: "***",
authDomain: "***",
databaseURL: "***",
projectId: "***",
storageBucket: "***",
messagingSenderId: "***"
};
export default !firebase.apps.length
? firebase.initializeApp(config).firestore()
: firebase.app().firestore();
@Purii und @jide , danke für die Lösungen
Hilfreichster Kommentar
Sie können
firebase.apps
überprüfen, um zu sehen, ob es geladen ist. Wenn Sie es nur einmal laden, können Sie einfach die Länge überprüfen. Wenn Sie mehrere haben, können Sie den Namen jeder App überprüfen.http://stackoverflow.com/questions/37652328/how-to-check-if-a-firebase-app-is-already-initialized-on-android