【问题标题】:Unable to import Firebase JS SDK with React Native Expo无法使用 React Native Expo 导入 Firebase JS SDK
【发布时间】:2021-11-28 07:52:45
【问题描述】:

在我的 React Native 应用程序中,我正在尝试将 Firebase JS SDK 与 this guide 中提到的 Expo 结合使用,尽管在通过 expo install firebase 安装依赖项后,我无法从 firebase/auth 导入模块。调用 getAuth() 等相应方法会导致以下错误:

TypeError: (0, _auth.getAuth) is not a function. (In '(0, _auth.getAuth)()', '(0, _auth.getAuth)' is undefined)

我也无法从firebase/databasefirebase/firestore 等导入模块。

我的项目是使用 Typescript 设置的,但我在纯 JS 项目中也遇到了这个问题。

我可以从 firebase/app 导入 firebase,但不能从相应的模块导入:

编辑:我在以下上下文中使用getAuth() 和其他方法:

React.useEffect(() => {

 if (response?.type === "success") {
  const { id_token } = response.params;

  const auth = getAuth();      
  const provider = new GoogleAuthProvider();
  const credential = provider.credential(id_token);
  signInWithCredential(auth, credential);
 }
}, [response]);

我使用的是 Firebase 8.2.3。

【问题讨论】:

  • 你能分享完整的,包括 getAuth() 的使用吗?您还安装了哪个版本的 Firebase?
  • 我更新了问题,我使用的是 Firebase 8.2.3

标签: javascript firebase react-native firebase-authentication expo


【解决方案1】:

您使用的导入语法适用于 Firebase SDK 版本 9 及更高版本。对于版本 8 及以下版本,请使用:

import firebase from 'firebase/app';
import 'firebase/auth';
...

然后使用如here所示的v8语法。

【讨论】:

  • 谢谢,这行得通。当expo install firebase 安装 v8 时,我真的不明白为什么 Expo 指南使用 SDK v9 语法。此外,他们最新的 SDK 版本 (v42) 甚至还与 Firebase SDK v9 不兼容,所以不知道他们在编写本指南/文档时的想法。
【解决方案2】:

不幸的是,最新的 expo sdk 与 firebase9 不兼容,如果您使用此版本的 firebase,您会看到奇怪的错误提示,请使用 firebase 版本 8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-07
    • 2021-11-24
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    • 2019-05-09
    相关资源
    最近更新 更多