$ firebaseAuth与AngularFire 2.0.1和3.0.5火力地堡
我想升级到火力3和AngularFire 2.
我已经在应用程序的配置阶段运行initializeApp
:
let firebaseConfig = { apiKey: config.fbSecret, authDomain: config.firebaseAuthDomain, databaseURL: config.firebaseBase }, fbApp = firebase.initializeApp(firebaseConfig); let baseRef = firebase.database().ref()
然后“provided`的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
的关系。
是否有示例应用程序在任何地方?我错过了什么吗?
你需要调用在run
块的开始初始化你的角度代码,因为你想在那里授权,我在我的几个早期的火力地堡
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);
})
},
}
})
谢谢你正在寻找角度初始化的最佳实践。我遇到的所有文档都放在index.html中。从哪里得到这些信息? – jamie
这只是我们在所有应用中使用的一种方法,只是将它放在index.html中似乎不正确。 –
当您在同一个应用程序中多次调用firebase.initializeApp()时,会出现此错误。你只应该一次给它打电话。你确定你只运行一次配置代码吗?你真的在你的代码的其他地方调用initializeApp()吗?你能否更新你的答案以包含你的设置代码? – jwngr
这是一个角度的应用程序。据我所知,配置只能在启动时运行一次。 (工作)应用程序的结构并没有真正改变。 InitializeApp不在客户端应用程序的其他任何位置运行。 该消息似乎表明,initializeApp根本没有运行,而不是它已经运行多次。那是错的吗? 发布所有设置代码是不太可能的,因为它有相当多的设置代码。 – kpg
啊,是的,我误读了,对不起。看起来您的配置代码在开始使用Firebase之前并未实际运行。没有看到你的设置代码,我不知道我怎么能帮你。尝试削减它,你可能会发现自己的问题。另外,你是否已经使用AngularFire(https://github.com/firebase/angularfire)来简化一起使用Angular和Firebase? – jwngr