【发布时间】:2016-10-30 22:42:18
【问题描述】:
我正在尝试升级到 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 的关系。
在任何地方都有示例应用程序吗?我错过了什么吗?
【问题讨论】:
-
在同一个应用中多次调用 firebase.initializeApp() 时会出现此错误。你应该只调用一次。你确定你只运行你的配置代码一次吗?您实际上是在代码中的其他位置调用 initializeApp() 吗?您能否更新您的答案以包含您的设置代码?
-
这是一个有角度的应用程序。据我所知,配置只能在启动时运行一次。 (工作)应用程序的结构并没有真正改变。 InitializeApp 不在客户端应用程序的其他任何地方运行。该消息似乎表明 initializeApp 根本没有运行,而不是它已经运行了多次。那是错的吗?真的不可能发布所有的设置代码,因为它有很多。
-
啊,是的,我看错了,对不起。在您开始使用 Firebase 之前,您的配置代码似乎并未真正运行。如果没有看到您的设置代码,我不确定如何为您提供帮助。尝试减少它,您可能会自己发现问题。另外,您是否考虑过使用 AngularFire (github.com/firebase/angularfire) 来简化 Angular 和 Firebase 的结合使用?
标签: angularjs firebase firebase-realtime-database angularfire2