【问题标题】:Property 'auth' does not exist on type 'typeof import("/home/kartik/Desktop/Ecommerce/ecommerce/node_modules/firebase/index")'. ts(2339)类型 'typeof import("/home/kartik/Desktop/Ecommerce/ecommerce/node_modules/firebase/index")' 上不存在属性 'auth'。 ts(2339)
【发布时间】:2021-08-11 09:58:39
【问题描述】:

我是 FireBase 的初学者,我正在尝试使用 Angular 使用 FireBase 实现 Google 登录。我在 auth 收到上述错误。我特此附上 package.json、package.lock.json 的 login.component.ts 和 dev 依赖项。

login.component.ts

import { Component, OnInit } from '@angular/core';
import * as firebase from 'firebase';
import 'firebase/auth';
import {AngularFireAuth} from 'angularfire2/auth'

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {

  constructor(private afAuth:AngularFireAuth) {
    firebase.default.database
   }

  ngOnInit(): void {
  }
  Login(){
    this.afAuth.auth.signInWithRedirect(new firebase.auth.GoogleAuthProvider()) //error due to this line.
  }

}

package.json

"dependencies": {
    "@angular/animations": "~11.1.0",
    "@angular/cdk": "^11.2.12",
    "@angular/common": "~11.1.0",
    "@angular/compiler": "~11.1.0",
    "@angular/core": "~11.1.0",
    "@angular/fire": "^6.0.4-canary.9a26fbe",
    "@angular/forms": "~11.1.0",
    "@angular/localize": "~11.1.0",
    "@angular/material": "^11.2.12",
    "@angular/platform-browser": "~11.1.0",
    "@angular/platform-browser-dynamic": "~11.1.0",
    "@angular/router": "~11.1.0",
    "@ng-bootstrap/ng-bootstrap": "^9.1.1",
    "angularfire2": "^5.4.2",
    "bootstrap": "^5.0.1",
    "firebase": "^8.6.2",
    "firebase-tools": "^9.10.2",
    "g": "^2.0.1",
    "rxjs": "~6.6.0",
    "tslib": "^2.0.0",
    "zone.js": "~0.11.3"
  },

package-lock.json

...

"@angular/fire": {
      "version": "6.0.4-canary.9a26fbe",
      "resolved": "https://registry.npmjs.org/@angular/fire/-/fire-6.0.4-canary.9a26fbe.tgz",
      "integrity": "sha512-LVskM344FFLQ34Dyc6ngN6n+c8kZODm3T3Sdzu43P4wmpaoocL06/3HMvXlQiwBdE3bH+F+tdGu2VYxgQZCWCA==",
      "requires": {
        "tslib": "^2.0.0"
      }
    },

...

"angularfire2": {
      "version": "5.4.2",
      "resolved": "https://registry.npmjs.org/angularfire2/-/angularfire2-5.4.2.tgz",
      "integrity": "sha512-7brktOHPObHgMnCN+QkakyCBr2mnxMxMSVLlEZ7OF70LjFIQz/RV3t5a7cH1SjystbY+kzR3qYvn/irlWs27/Q==",
      "requires": {
        "@angular/fire": "5.4.2"
      },
      "dependencies": {
        "@angular/fire": {
          "version": "5.4.2",
          "resolved": "https://registry.npmjs.org/@angular/fire/-/fire-5.4.2.tgz",
          "integrity": "sha512-QzB5d1wtqr9jxfsVNv2+569MlfK4/QrrpNy0IngOHdxS4FBbXqMOcx37iv1m2mzJv9zlGUddUX44IZP5Xfb3cw=="
        }
      }
    },

【问题讨论】:

  • 你为什么使用旧版本的 angular-fire?在最新版本中,语法略有变化,但您愿意更新您的依赖版本吗?
  • 可能是由于教程视频,顺便说一下/我使用的是 angularfire 6.0.4 canary。请向我推荐新语法,我将重新安装它@latest。另一部分是我接受我是 firebase 的初学者,请不要对我的问题投反对票,我们不是来互相帮助的吗?
  • 新语法为import { AngularFireAuth } from '@angular/fire/auth';import { AngularFirestore } from '@angular/fire/firestore';import * as firebase from 'firebase/app';。我发现此视频很有帮助,请查看:youtube.com/watch?v=qP5zw7fjQgo&ab_channel=Fireship

标签: javascript angular firebase firebase-authentication angularfire2


【解决方案1】:

您的依赖项是旧的。我建议您更新它们并使用新语法:

import { AngularFireAuth } from '@angular/fire/auth';
import { AngularFirestore } from '@angular/fire/firestore';
import { AngularFireDatabaseModule } from '@angular/fire/database';

import * as firebase from 'firebase/app';

firebase@7.24.0

关于 firebase 身份验证的完整教程,我觉得非常有用;这是link

旧的进口是

import { AngularFireAuthModule } from 'angularfire2/auth';

【讨论】:

  • 工作,但在运行时抛出错误:NullInjectorError: R3InjectorError(AppModule)[AngularFireAuth -> InjectionToken angularfire2.app.options -> InjectionToken angularfire2.app.options -> InjectionToken angularfire2.app.options]: NullInjectorError: No provider for InjectionToken angularfire2.app.options! NullInjectorError: R3InjectorError(AppModule)[AngularFireAuth -> InjectionToken angularfire2.app.options -> InjectionToken angularfire2.app.options -> InjectionToken angularfire2.app.options]: NullInjectorError: No provider for InjectionToken angularfire2.app.options!
  • 这个有帮助吗? stackoverflow.com/a/53837222/5706293
  • 这会导致错误 TS2614: Module '"../../../../firebase"' has no exported member 'auth'. Did you mean to use 'import auth from "../../../../firebase"' instead? 2 import { auth, database, messaging, storage, firestore, functions } from 'firebase/app'; error 并且没有任何 stackoverflow 解决方案在工作
  • 你要导入什么?
  • 没什么,错误来自app.module.d.ts
猜你喜欢
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 2019-02-02
  • 2021-01-10
  • 2019-08-11
  • 2021-08-02
  • 2020-06-02
  • 2022-07-09
相关资源
最近更新 更多