与Firebase集成的Expo应用可登录注册但无法登出问题求助
Expo+Firebase登出问题解决方案
问题根因
你的登出代码存在两处核心错误:
- 初始版本未给异步方法
signOut()添加await关键字,导致Promise未完成执行就进入后续逻辑,同时强行解构不存在的返回值会抛出异常 - 两个版本的
signOut()均未传入必填的auth实例参数,这是和你可用的注册逻辑最明显的差异:Firebase v9+ 所有auth相关方法都要求将初始化完成的auth实例作为首个参数传入。
可正常运行的登出代码
import { auth } from '../firebase' import { useNavigation } from '@react-navigation/core' import { signOut } from 'firebase/auth' const navigation = useNavigation() const handleSignOut = async () =>{ try{ // 传入初始化好的auth实例作为参数,signOut执行成功无返回用户对象,无需解构 await signOut(auth) console.log("Signed out successfully") navigation.replace("Login") }catch (error) { console.log({error}); } }
注意事项
signOut()方法执行成功后不会返回用户对象,不需要参考注册逻辑的返回值解构写法,只要无报错抛出即代表登出操作完成。
内容的提问来源于stack exchange,提问作者Calvin Lin
相关产品推荐
相关产品推荐

