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.
if (!firebase.apps.length) {
firebase.initializeApp({});
}
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);
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
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
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.