离子 2 应用程序中的“AngularFireAuth”类型不存在属性“authState”

Posted

技术标签:

【中文标题】离子 2 应用程序中的“AngularFireAuth”类型不存在属性“authState”【英文标题】:Property 'authState' does not exist on type 'AngularFireAuth' in ionic 2 app 【发布时间】:2017-10-05 20:00:38 【问题描述】:

我正在尝试使用 firebase 的 AngularFire2 进行 facebook 身份验证。 我遵循与本教程完全相同的步骤github.com/angular/angularfire2/blob/master/docs/Auth-with-Ionic2.md

但由于某种原因,这不起作用。它给了我很多来自我的提供商页面的错误。这是我的代码。

import  Injectable  from '@angular/core';
import  Component  from '@angular/core';
import  Http  from '@angular/http';
import 'rxjs/add/operator/map';
import  Observable  from 'rxjs/Observable';
import  AngularFireAuth  from 'angularfire2/auth';
import * as firebase from 'firebase/app';


@Injectable()
export class AuthService 
     private authState: Observable<firebase.User>;
     private currentUser: firebase.User;

     constructor(public http: Http, public afAuth: AngularFireAuth) 
     console.log('Hello AuthService Provider');
     this.authState = afAuth.authState; //First error here.
     afAuth.subscribe((user: firebase.User) =>  //second here
     this.currentUser = user;
      );


  get authenticated(): boolean 
    return this.currentUser !== null;
  

  signInWithFacebook(): firebase.Promise<any> 
     return this.afAuth.auth.signInWithPopup(new firebase.auth.FacebookAuthProvider()); //third error here
      

  signOut(): void 
    this.afAuth.signOut();
  

  displayName(): string 
    if (this.currentUser !== null) 
      return this.currentUser.facebook.displayName;
        else 
       return '';
       
   

错误

Property 'authState' does not exist on type 'AngularFireAuth'.

Argument of type '(user: User) => void' is not assignable to parameter of type '(value: FirebaseAuthState) => void'. 
Types of parameters 'user' and 'value' are incompatible. 
Type 'FirebaseAuthState' is not assignable to type 'User'. 
Property 'delete' is missing in type 'FirebaseAuthState'.

Property 'auth' does not exist on type 'AngularFireAuth'.

我对 angular 和 ionic 还很陌生,请在此处指导我,或导航到一个好的教程

【问题讨论】:

【参考方案1】:

我通过重新安装 Firebase 和 AngularFire2 解决了这个问题:

npm uninstall angularfire2 --save
npm uninstall firebase --save
npm install angularfire2 firebase --save

更新:

npm install firebase @angular/fire --save

【讨论】:

【参考方案2】:

最后一行的正确答案现已弃用

npm install firebase @angular/fire --save

【讨论】:

以上是关于离子 2 应用程序中的“AngularFireAuth”类型不存在属性“authState”的主要内容,如果未能解决你的问题,请参考以下文章

离子输入离子2中的对齐文本

如何从 Windows 调试离子视图中的应用程序?

离子选择循环中的选定值

离子2寻找应用程序时应该寻找app.js

离子2 - 如何管理全局变量?

在离子2中的页面之间传递一个数组