我的ionic2应用程序使用firebase身份验证 . 当我使用相同的电子邮件登录到多个提供商(谷歌和Facebook)时,我尝试处理auth / account-exists-with-different-credential错误 .
constructor(public af: AngularFire,public navCtrl: NavController) {
firebase.auth().getRedirectResult()
.then(res=>{
console.log('success',res)
})
.catch((err:any)=>{
console.log(error.message)
if (err.code=='auth/account-exists-with-different-credential'){
doaccountlink();
}
})
}
fblogin(){
firebase.auth().signInWithRedirect(new firebase.auth.FacebookAuthProvider())
}
gglogin(){
firebase.auth().signInWithRedirect(new firebase.auth.GoogleAuthProvider())
}
我可以在catch块中捕获该错误代码(如预期的那样),但问题是在控制台中仍然显示Exception,我的页面也显示错误(请参阅附加图像) . 我是javascript / typescript的新手,在java中,如果我已经在catch块中捕获错误那么它应该没问题 . 或者我的代码有问题 . 如何防止此异常显示在我的页面上?
1 回答
我们需要仔细调试您的代码以准确理解发生了什么,必须在其他地方抛出另一个异常,这就是您看到该页面的原因;但是有一些技巧可能派上用场:
IonicErrorHandler
. 您可以查看app.module.ts
文件,在providers数组中,您将找到以下行:所以基本上Ionic正在扩展Angular 2 default's ErrorHandler与该类 . 另请注意,这已经完成 only when running on the dev server , 生产环境 中没有任何操作(您可以查看源代码here) .
ErrorHandler
的新类来做到这一点然后在你的
app.module.ts
替换{ provide: ErrorHandler, useClass: IonicErrorHandler }
同
{ provide: ErrorHandler, useClass: MyErrorHandler }