reactjs - 无法将 React Native 应用程序连接到 Firestore 模拟器
问题描述
我已经尝试了 Stack Overflow 及其他方面的几乎所有解决方案,但仍然出现错误。我已经设置并确认模拟器运行良好。但是,尝试将 react 本机应用程序连接到它会返回错误:
Could not reach Cloud Firestore backend. Connection failed 1 times...
接着是一堆这样的警告:
Connnection Webchannel transport errored
.
这是我的配置信息
import * as firebase from 'firebase';
import { initializeApp } from "firebase/app";
import firestore from 'firebase/firestore';
const firebaseConfig = {
apiKey: "ZZZZ",
authDomain: "ZZZZ",
projectId: "ZZZZ",
storageBucket: "ZZZZ",
messagingSenderId: "ZZZZ",
appId: "ZZZ",
measurementId: "ZZZ"
};
firebase.initializeApp(firebaseConfig);
firebase.firestore().useEmulator("localhost", 8080);
我什至替换localhost
为0.0.0.0
,同样的错误。
有人建议将最后一行更改为
firebase.firestore().settings({
host: "localhost:8080",
ssl: false
});
我试过了,但仍然遇到同样的错误。
请问正确的,经过验证的方法是什么?我真的很感激,因为我想花几个小时在这上面!
解决方案
恐怕您没有正确导入firestore,也没有以适当的方式初始化模拟器。您正在正确导入 Firebase 函数,但您需要更改一些内容。
我将引用 Firebase 版本 9,因为它是应该使用的版本,如果您仍想使用版本 8,我将留下您可以选择使用哪个版本的参考。
检测您的应用程序以与模拟器对话
设置应用内配置或测试类以与 Cloud Firestore 交互,如下所示。
import { `getFirestore`, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, 'localhost', 8080);
当您初始化 Firebase时 ,您需要在使用 npm 安装 firebase 后这样做。
const app = initializeApp(firebaseConfig);
和...
初始化 Cloud Firestore
初始化 Cloud Firestore 的实例:
import { initializeApp } from "firebase/app" import { getFirestore } from "firebase/firestore" const firebaseApp = initializeApp({ apiKey: '### FIREBASE API KEY ###', authDomain: '### FIREBASE AUTH DOMAIN ###', projectId: '### CLOUD FIRESTORE PROJECT ID ###' }); const db = getFirestore();
最后,您的文件应如下所示:
import { initializeApp } from "firebase/app";
import { getFirestore } from 'firebase/firestore';
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";
const firebaseConfig = {
apiKey: "ZZZZ",
authDomain: "ZZZZ",
projectId: "ZZZZ",
storageBucket: "ZZZZ",
messagingSenderId: "ZZZZ",
appId: "ZZZ",
measurementId: "ZZZ"
};
const app = initializeApp(firebaseConfig);
const db = getFirestore();
connectFirestoreEmulator(db, 'localhost', 8080);
推荐阅读
- javascript - RouterLink 在浏览器中工作,但不能在模拟器或设备上工作
- linux - 如何使用第二台 PC 即时替换请求的文件?
- python - Python DiGraph - 动态源数据
- asp.net - ASP.NET`、.NET Framework 和公共语言运行时 (CLR) 的区别和用途是什么?
- reactjs - 在 React Redux 中使用状态更改来触发模态
- java - 如何从 AWS EMR 中的 hadoop 访问 S3 文件夹
- azure-ad-b2c - Azure B2C - 配置“忘记密码”工作流而不重定向?
- reactjs - 用嵌套的 slug 反应 Next.js 和 DatoCMS
- powershell - 使用 Powershell 匹配并打印输出中的特定列
- sql - 如何将大量 JSON 数据从 SQL Server 导出到多个单独的行中?