react-native - Expo不适用于firebase模拟器
问题描述
我正在尝试通过我的 Expo 应用程序在物理设备和模拟设备上访问 firestore 模拟器(本地托管),这两种设备都不起作用。当我调用模拟的 Firestore 数据库(例如设置文档)时,它不会显示在 UI 上。但是,如果我为真正的 Firestore 运行完全相同的代码,它可以正常工作。
我的 firebase.json 配置是:
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"emulators": {
"firestore": {
"port": 8080
},
}
}
对于 android 模拟器上的 Expo 应用程序,我将配置设置为:
firebase.firestore().settings({
host: "10.0.2.2:8080",
ssl: false,
})
对于我的物理 android 设备上的 Expo 应用程序:
firebase.firestore().settings({
host: "localhost:8080",
//I've also tried "192.168.68.109:8080" my computer's IP
ssl: false,
})
解决方案
事实证明,您需要将 firebase.json 上的主机指定为
"emulators": {
"firestore": {
"port": 8080
"host": "0.0.0.0"
},
至于物理设备上 Expo 应用程序的配置,而不是“localhost:8080”,而是将您的计算机(或您在网络中的任何主机)的 IP 地址加上“:8080”。
如果这一切仍然不起作用,请尝试项目目录中的命令“firebase use <YOUR_PROJECT_ID>”,它应该可以工作。
推荐阅读
- angular - Angular 7 Http 客户端和 Asp Core - Cors 错误
- ios - 在 iOS 上无法捕捉从“倒置”到横向的方向变化
- r - 在另一个变量的基础上用其他变量创建新变量
- java - 如何将可以是简单字符串或对象的 JSON 元素解析为类对象
- c# - 如何使用 Linq C# 对可变数量的列进行排序?
- javascript - 在“使用严格”之外声明没有 var 的变量
- blazor-server-side - 服务器端 Blazor blazor.server.js 而不是 blazor.webassembly.js
- jquery - 在 table.ajax.reload() 之后未调用数据表 initComplete;
- javascript - 谷歌浏览器不为我的网站提供翻译
- python - 如果python中没有有效的解析输出,如何避免创建空记录器文件?