web-dev-qa-db-fra.com

L'application Firebase nommée '[DEFAULT]' existe déjà (app/duplicate-app)

Bonjour, j'essaie de tester un peu tout en développant un site Web simple avec AngularJS + Firebase, mais j'ai un problème pour définir les spécifications et essayer le programme d'essai.

myProject/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)
})
});

résultat:

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

Cependant, définir les spécifications une fois n’est pas un problème. Par exemple:

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

Je ne sais pas pourquoi c'est la raison pour laquelle je me donne un indice

Voici le projet que je développe.

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

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

Réponse similaire ici

16
Isaac Sekamatte

j'ai seulement jeté un coup d'œil à votre dépôt Github pour voir qu'il y avait plus de fichiers .js que ce qui est suggéré dans votre question. j’avais 2 fichiers .js distincts. les deux étant inclus sur la même page html qui étaient à la fois la configuration et l’initialisation de l’application par défaut lorsqu’il n’était nécessaire que de le faire une fois pour cette page, je crois. ce qui a fonctionné pour moi a été de commenter le deuxième "initializeApp ()" et je n'ai plus cette erreur. essayez de rechercher le ci-dessous dans votre fichier .js et commentez ou supprimez l’une des initialisations.

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

J'ai eu le même problème en utilisant firebase, et je découvre que je l'initialisais deux fois, par exemple:

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

Dans mon cas, j'utilisais react, et j'appelais initializeFirebase () depuis deux composants différents, mais j'ai décidé de l'appeler depuis le composant parent. Et maintenant, je peux interroger ma base de données, insérer des enregistrements, les supprimer, etc.

J'espère que cela aide quelqu'un

2
Erick Garcia

J'ai eu le même problème

si vous utilisez des modules ES6 et que vous avez installé firebase by npm, vous ne pouvez pas mettre les scripts init dans index.html

ce sont des duplications de dépendances firebase

0
Juraj Sarissky

J'ai récemment résolu ce problème dans mon propre code. Mon problème a été causé par la liaison accidentelle de mon fichier javascript, qui appelle initializeApp (), dans la tête et dans le corps de mon fichier html. Mon correctif était de supprimer la balise javascript en double dans la tête de mon fichier html afin qu'il n'en reste plus qu'une dans le corps.

Parcourez votre code pour vous assurer que vous n’appelez qu'une seule fois initializeApp (). Cela inclut tous les fichiers js susceptibles d'appeler la méthode ou de dupliquer le fichier js dans votre fichier html.

0
kendra