wake-up-neo.com

Die Firebase-App mit dem Namen "[DEFAULT]" ist bereits vorhanden (app/duplicate-app)

Hallo, ich versuche, Unit-Tests zu entwickeln, während ich mit AngularJS + Firebase ein einfaches Web entwickle. Ich habe jedoch ein Problem mit der Definition der Spezifikation und dem Testen des Testläufers

meinProjekt/test/spec/main.js:

describe('Controller: MainCtrl', function() {

var MainCtrl, scope

beforeEach(module('MainApp'));

beforeEach(inject(function ($controller, $rootScope) {
    scope = $rootScope.$new();
    MainCtrl = $controller('MainCtrl', {
        $scope: scope
    })
}));

it('should....',function(){
    expect(true).toBe(true)
})
it('should2....',function(){
    expect(false).toBe(false)
})
});

ergebnis:

PhantomJS 2.1.1 (Mac OS X 0.0.0) Controller: MainCtrl should.... FAILED
Error: [$injector:modulerr] Failed to instantiate module MainApp due 
to: Firebase: Firebase App named '[DEFAULT]' already exists 
(app/duplicateapp).

Das einmalige Definieren der Spezifikation ist jedoch kein Problem. Zum Beispiel:

it('should....',function(){
   expect(true).toBe(true)
})

Ich weiß nicht, warum ich aus diesem Grund einen Hinweis gebe

Hier ist das Projekt, das ich entwickle.

https://github.com/parkwookyun/firebase-angular-board

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

Ähnliche Antwort hier

16
Isaac Sekamatte

ich habe nur einen Blick auf Ihr Github-Repo geworfen, um zu sehen, dass es mehr .js-Dateien gibt als in Ihrer Frage vorgeschlagen. Ich hatte 2 separate .js-Dateien. Beide befinden sich auf derselben HTML-Seite, die sowohl die Standard-App konfiguriert als auch initialisiert hat, wenn sie für diese Seite nur einmal ausgeführt werden musste, glaube ich. Was für mich funktionierte, war das zweite "initializeApp ()" zu kommentieren, und ich bekam diesen Fehler nicht mehr. Versuchen Sie, in Ihren .js nach dem Folgenden zu suchen und eine der Initialisierungen auszukommentieren oder zu löschen.

var config = { apiKey: "my api key", authDomain: "something.firebaseapp.com", databaseURL: "https://somesite.firebaseio.com", projectId: "myProjectId", storageBucket: "somesite.appspot.com", messagingSenderId: "someIntegers" }; //firebase.initializeApp(config);

2
Duan Walker

Ich hatte das gleiche Problem mit Firebase, und ich stelle fest, dass ich die Firebase zweimal initialisiert habe. Beispiel:

function initializeFirebase(){    
 var config = {
    apiKey: "myApiKey",
    authDomain: "myAuthDomain",
    databaseURL: "myDatabaseUrl",
    storageBucket: "myStorageBocket",
    messagingSenderId: "idhere"   
   };   
   //initialize firebase  
   firebase.initializeApp(config);  
}

In meinem Fall habe ich reagieren verwendet, und ich habe initializeFirebase () von zwei verschiedenen Komponenten aus aufgerufen. Und jetzt kann ich meine Datenbank abfragen, Datensätze einfügen, entfernen usw.

Hoffe das hilft jemandem

2
Erick Garcia

Ich hatte das gleiche Problem

wenn Sie ES6-Module verwenden und Firebase von npm installiert haben, können Sie init scrips nicht in index.html einfügen

es handelt sich um Doppelungen von Abhängigkeiten der Firebase

0
Juraj Sarissky

Ich habe dieses Problem kürzlich in meinem eigenen Code gelöst. Mein Problem wurde durch versehentliches Verknüpfen meiner Javascript-Datei, die initializeApp () aufruft, im Kopf und im Hauptteil meiner HTML-Datei verursacht. Meine Lösung bestand darin, das Duplikat-Javascript-Tag im Kopf meiner HTML-Datei zu löschen, sodass nur ein Element im Hauptteil vorhanden war.

Durchsuchen Sie Ihren Code, um sicherzustellen, dass Sie initializeApp () nur einmal aufrufen. Dies umfasst alle js-Dateien, die möglicherweise die Methode aufrufen oder die js-Datei in Ihrer html-Datei duplizieren.

0
kendra