无法为Expo托管项目添加Firestore的问题求助
解决Firebase引入后React Native应用崩溃的问题
问题根源
报错是因为Firebase官方包的web版本依赖idb(浏览器端IndexedDB的封装库),但React Native环境不支持这个web专属依赖,Metro打包器找不到适配Native的idb文件,导致打包失败。
解决方案
方案一:使用Expo官方集成的Firebase包(推荐)
Expo已经做好了Firebase的Native适配,直接用这个版本能避免依赖冲突:
- 卸载现有
firebase包:npm uninstall firebase # 用yarn的话执行:yarn remove firebase - 安装Expo Firebase核心包:
npx expo install expo-firebase-app - 修改导入代码:
之后按照Expo官方文档配置Firebase项目参数即可正常使用。import { initializeApp } from 'expo-firebase-app';
方案二:修改Metro配置适配官方Firebase包
如果坚持使用官方firebase包,需要让Metro正确解析idb模块:
- 在项目根目录创建或修改
metro.config.js,添加以下配置:const { getDefaultConfig } = require('@expo/metro-config'); const config = getDefaultConfig(__dirname); config.resolver.resolveRequest = (context, moduleName, platform) => { // 强制Metro解析idb的cjs版本 if (moduleName === 'idb') { return { filePath: require.resolve('idb/lib/index.cjs'), type: 'sourceFile', }; } return context.resolveRequest(context, moduleName, platform); }; module.exports = config; - 清除缓存并重启项目:
npx expo start --clear
内容的提问来源于stack exchange,提问作者Noisemastering
相关产品推荐
相关产品推荐

