1

Firebase 3 と AngularFire 2 にアップグレードしようとしています。

私はinitializeAppアプリの設定段階で実行しました:

let firebaseConfig = { apiKey: config.fbSecret, authDomain: config.firebaseAuthDomain, databaseURL: config.firebaseBase }, fbApp = firebase.initializeApp(firebaseConfig); let baseRef = firebase.database().ref()

そして、他のモジュールに挿入するためのbaseRefを「提供」します(古いバージョンで行っているように):

$provide.value('FirebaseBase', baseRef);

FirebaseBaseサービスモジュールに注入して、例えばを使用できるようにしますFirebaseBase.child('profile')

エラーは発生しませんが、アプリの実行時にコンソールに次のエラーが表示されます。

angular.js:4576 Uncaught Error: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp().

runエラーの原因はわかりませんが、フェーズにいくつかの認証コードがあります。

$firebaseAuth.$onAuthStateChanged(..

そこから来ているのではないかと推測しています。私は移行ガイドに従おうとしましたが、実際の例はないようで、新しいAngularFireがfirebase.initializeApp.

サンプルアプリはどこかにありますか?何か不足していますか?

4

2 に答える 2

2

そこで承認しようとしているので、角度コードのブロックの先頭で初期化を呼び出す必要がありrunます。以前のFirebaseの統合のいくつかでこの間違いを犯しました

angular.module('starter', ['ionic', 'starter.controllers', 'starter.services', 'ngCordova'])

  .run(function ($ionicPlatform, FirebaseDB, $rootScope, $state) {

    FirebaseDB.initialize();

    // for authentication, managing the state if error..
    $rootScope.$on('$stateChangeError',
      function (event, toState, toParams, fromState, fromParams, error) {

        // if the error is "NO USER" the go to login state
        if (error === "NO USER") {
          event.preventDefault();
          $state.go('login', {});
        }
      });

  })

私のfirebaseServiceで

  .factory('FirebaseDB', function ($q, $state, $timeout) {
    var instance, storageInstance, unsubscribe, currentUser = null
    var initialized = false

    return {
      initialize: function () {

        // Not initialized so... initialize Firebase
        var config = {
            //SET YOUR CONFIG BLOCK HERE
        };

        // initialize database and storage
        instance = firebase.initializeApp(config);
        storageInstance = firebase.storage();

        // listen for authentication event, dont start app until I 
        // get either true or false
        unsubscribe = firebase.auth().onAuthStateChanged(function (user) {
          currentUser = user
          console.log("got user..", currentUser);
        })
      },
    }
  })
于 2016-07-03T18:12:10.630 に答える
-3

Runフレーズに入れると修正されます。

于 2016-12-23T16:54:16.253 に答える