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

如果你把它放在运行短语中,它会修复它。

于 2016-12-23T16:54:16.253 回答