Next.js: Firebase App namens '[DEFAULT]' existiert bereits (App/Duplikat-App)

Erstellt am 17. Mai 2017  ·  10Kommentare  ·  Quelle: vercel/next.js

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).

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.

if (!firebase.apps.length) {
    firebase.initializeApp({});
}

http://stackoverflow.com/questions/37652328/how-to-check-if-a-firebase-app-is-already-initialized-on-android

Alle 10 Kommentare

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({});
}

http://stackoverflow.com/questions/37652328/how-to-check-if-a-firebase-app-is-already-initialized-on-android

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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen