web-dev-qa-db-ja.com

「[DEFAULT]」という名前のFirebaseアプリは既に存在します(app / duplicate-app)

こんにちは、AngularJS + Firebaseを使用してシンプルなWebを開発しながら単体テストを試みていますが、仕様の定義とテストランナーの試行に問題があります

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

結果:

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

ただし、一度仕様を定義することは問題ではありません。例えば:

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

これが私にヒントを与える理由である理由がわかりません

これが私が開発中のプロジェクトです。

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

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

ここでも同様の答え

40
Isaac Sekamatte

Firebaseを使用しても同じ問題が発生し、firebaseを2回初期化していたことがわかりました。例:

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

私の場合、reactを使用していました。そして、2つの異なるコンポーネントからinitializeFirebase()を呼び出していましたが、親コンポーネントから呼び出すことにしました。そして今、データベースのクエリ、レコードの挿入、削除などができるようになりました。

これが誰かを助けることを願っています

6
Erick Garcia

私はあなたのgithubリポジトリを見て、質問で提案されているよりも多くの.jsファイルがあることを確認しました。 2つの.jsファイルがありました。両方とも同じHTMLページに含まれていて、デフォルトのアプリの設定と初期化の両方を行っていたのに、そのページで一度だけ実行する必要があると思います。私のために働いたのは、2番目の「initializeApp()」をコメントアウトすることであり、もはやそのエラーは発生しませんでした。 .jsで以下を探して、初期化の1つをコメント化または削除してください。

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

私は同じ問題を抱えています

eS6モジュールを使用していて、npmでfirebaseをインストールした場合、init scripsをindex.htmlに入れることはできません

ファイアベースの依存関係の重複です

0
Juraj

最近、自分のコードでこの問題を解決しました。私の問題は、javascriptファイルを誤ってリンクし、initializeApp()をhtmlファイルのヘッドとボディにリンクすることにより発生しました。私の修正は、HTMLファイルの先頭にある重複したJavaScriptタグを削除して、本文に1つだけが存在するようにすることでした。

コードをスキャンして、initializeApp()を1回だけ呼び出すようにしてください。これには、メソッドを呼び出したり、htmlファイルでjsファイルを複製したりするjsファイルが含まれます。

0
kendra