无法使用 React Native Expo 导入 Firebase JS SDK
Posted
技术标签:
【中文标题】无法使用 React Native Expo 导入 Firebase JS SDK【英文标题】:Unable to import Firebase JS SDK with React Native Expo 【发布时间】: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/database
、firebase/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 【参考方案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
【讨论】:
以上是关于无法使用 React Native Expo 导入 Firebase JS SDK的主要内容,如果未能解决你的问题,请参考以下文章
无法将 babel-plugin-module-resolver 与 expo 和 react-native 一起使用
未知的执行上下文错误 - 将领域导入 Expo React Native IOS 应用程序
无法使用 react-native-svg 或 Svg/expo 让 Svg 显示在 react-native 中
使用 Expo 运行时,create-react-native-app 无法构建 javascript 包