【问题标题】:Facebook Authentication Firebase with React JS - Providers Error使用 React JS 的 Facebook 身份验证 Firebase - 提供者错误
【发布时间】:2021-09-02 12:34:23
【问题描述】:

我想使用 Firebase 身份验证通过 React JS 登录 Facebook。我将 firebaseSample.ts 和 config.ts 文件留在下面。

我在 React JS 端收到错误“TypeError: Cannot read property 'FacebookAuthProvider' of undefined”。这条线正是如此。

  • facebook:新的 firebase.auth.FacebookAuthProvider()

在一些帖子中,“import * as firebase from "firebase/app";”我看过更改导入结构的相关文章。

import * as firebase from "firebase";据说是。但是,当我这样做时,我在 initializeApp 端收到错误。

firebaseSample.ts

import * as firebase from "firebase/app";
import 'firebase/auth';
import 'firebase/firestore';
import config from 'config/config';

const FirebaseSample = firebase.initializeApp(config.firebase);

export const Providers = {
facebook: new firebase.auth.FacebookAuthProvider()
}

export const auth = firebase.auth();
export default FirebaseSample;

config.ts

const config = {
firebase: { 
  apiKey: "unique_id",
  authDomain: "unique_id",
  databaseURL: unique_id",
  projectId: "unique_id-1663e",
  storageBucket: "unique_id.appspot.com",
  messagingSenderId: "unique_id",
  appId: "1:unique_id",
  measurementId: "G-unique_id"
  }
}
export default config;

更新 firebaseSample.ts

import firebase from 'firebase/compat/app'
import 'firebase/compat/auth'
import 'firebase/compat/firestore'
import config from 'config/config';

const FirebaseSample = firebase.initializeApp(config.firebase);

export const Providers = {
facebook: new firebase.auth.FacebookAuthProvider()
}

 export const auth = firebase.auth();
 export default FirebaseSample;
  • 更新 firebaseSample.ts 文件中的导入文件后,我开始收到错误“ReferenceError: Can't find variable: Providers”。我将其作为屏幕截图附上。

更新 2.0 firebaseSample.ts

import firebase from 'firebase/compat/app'
import 'firebase/compat/auth'
import 'firebase/compat/firestore'
import config from 'config/config';

const FirebaseSample = firebase.initializeApp(config.firebase);

const Providers = {
  facebook: new firebase.auth.FacebookAuthProvider()
 }

   export Providers;    

  export const auth = firebase.auth();
  export default FirebaseSample;

最后更新和信息

我通过更新整个项目中的 firebase 导入结构解决了该错误。

import firebase from 'firebase/compat/app'
import 'firebase/compat/auth'
import 'firebase/compat/firestore'

非常感谢您。

【问题讨论】:

  • export { Providers } {}。要将其导入其他组件:import { Providers } from "../path/to/firebaseSample.ts"
  • Providers 不是一个组件。
  • 没有任何代码显示您如何使用导入的Providers。您可以在问题中添加它吗?
  • 我没有为提供者做任何额外的事情。我在这里使用参考。 firebase.google.com/docs/auth/web/facebook-login#web-version-9
  • 我已经在处理 firebaseSample.ts。 import { Providers } from "../path/to/firebaseSample.ts" 我不明白为什么需要导入它。

标签: javascript reactjs firebase firebase-authentication facebook-javascript-sdk


【解决方案1】:

如果您使用的是 Firebase SDK 的新版本。您需要将导入更改为的版本 9:

import firebase from 'firebase/compat/app'
import 'firebase/compat/auth'
import 'firebase/compat/firestore'

或者根据新的 Firebase SDK 9 使用新语法。compat 导入允许您仍然使用旧语法。

你也可以试试这样写吗:

export const Providers = {
  facebook: new firebase.auth.FacebookAuthProvider()
}

像这样:

const Providers = {
  facebook: new firebase.auth.FacebookAuthProvider()
}

export { Providers }

【讨论】:

  • 我按照您的指定更新了导入并收到以下错误。 TypeError: Cannot read property 'FacebookAuthProvider' of undefined 但是,我开始收到错误“ReferenceError: Can't find variable: Providers”。
  • 您能否用最新的代码和错误的屏幕截图更新您的问题。
  • 您能否请检查更新后的答案以及关于导出的最后一部分。
  • 我将 firebaseSample.ts 文件重新添加为已更新 2.0 并出现错误。我在问题部分分享它。谢谢
  • @Dharmaraj 编辑了答案。我们忘记将{} 放在Providers 周围,因为它是一个命名导出。你能用那个改变再试一次吗?
猜你喜欢
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 2019-05-30
  • 2016-12-25
  • 1970-01-01
  • 2018-06-19
  • 2019-10-10
  • 1970-01-01
相关资源
最近更新 更多