Expo Go + React Native + Firebase登录时突发auth/network-request-failed错误求助
Expo Go + React Native + Firebase登录时突发auth/network-request-failed错误求助
Hey 👋,看到你遇到了这个突发的auth/network-request-failed错误,而且是在调整了API Key的存储方式后出现的,我来帮你梳理下可能的原因和解决办法:
1. 先排查最基础的网络问题
这个错误的核心是网络请求失败,所以先从基础网络入手:
- 确认运行Expo Go的设备和开发电脑处于同一稳定网络,没有开启VPN、代理或者防火墙拦截网络请求
- 尝试切换网络环境(比如从WiFi切换到手机流量),测试是否能正常发起请求
- 检查Firebase控制台项目所在区域的服务状态(虽然突发概率低,但偶尔区域服务波动也会导致这类问题)
2. 验证Firebase配置的有效性
你提到之前调整过API Key的存储方式,现在要确保配置完全正确:
- 核对代码中的
apiKey、authDomain等配置项,和Firebase控制台项目设置里的内容完全一致,没有拼写错误、字符遗漏或多余空格 - 进入Firebase控制台的Authentication -> 设置 -> 授权域,确认你的
authDomain已被添加,没有被误删 - 检查Firebase项目的API Key是否设置了调用限制:如果之前为了安全限制了域名,但React Native/Expo属于移动应用,应该设置为不限制或允许所有移动应用调用
3. 清除Expo Go的缓存
Expo Go的缓存有时候会残留旧配置,导致新修改不生效:
- 完全关闭Expo Go应用,重新打开后在终端按
r键刷新项目 - 执行
expo r -c命令强制清除项目缓存,重新加载 - 极端情况下可以删除项目的
node_modules、package-lock.json,重新执行npm install后再启动项目
4. 检查Firebase Auth初始化逻辑
你的代码用了自定义持久化配置,这里可以做几个测试:
- 确认
@react-native-async-storage/async-storage已正确安装,且版本与Expo环境兼容(Expo内置了AsyncStorage,手动安装时要注意版本匹配) - 临时改用默认的Auth初始化方式,排除持久化导致的异常:
// 临时替换原auth初始化代码测试 import { getAuth } from "firebase/auth"; export const auth = getAuth(app);
5. 检查Firebase SDK版本兼容性
SDK版本不匹配也可能导致突发的网络请求错误:
- 查看
package.json中firebase、@firebase/auth等相关依赖的版本,确保所有Firebase相关包的版本一致,没有版本差异过大的情况 - 如果近期更新过Firebase SDK,尝试回退到之前能正常运行的版本
另外,建议在登录函数中添加更详细的错误日志,以便定位具体问题:
const signIn = async () => { try { const user = await signInWithEmailAndPassword(auth, email, password); if (user) router.replace('/(tabs)/home'); } catch (error: any) { console.log('错误代码:', error.code); console.log('错误详情:', error.details); // 部分错误会携带更具体的信息 alert('Sign in failed: ' + error.message); } };
如果以上方法都无效,可以尝试创建一个全新的最小Expo项目,只集成Firebase Auth登录功能,验证是否能正常运行,以此排除项目其他代码或依赖的冲突。
内容来源于stack exchange
相关产品推荐
相关产品推荐

