无法将 React Native 应用程序连接到 Firestore 模拟器
Unable to connect React Native app to Firestore emulator
我已经尝试了 Stack Overflow 及以后的几乎所有解决方案,但仍然出现错误。
我已经设置并确认模拟器运行正常。但是,尝试将 React Native 应用程序连接到它 returns 错误:
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);
我什至用0.0.0.0
替换了localhost
,同样的错误。
有人建议将最后一行更改为
firebase.firestore().settings({
host: "localhost:8080",
ssl: false
});
我试过了,但仍然出现同样的错误。
请问正确的、经过验证的方法是什么?我真的很感激,因为我想花几个小时在这上面!
恐怕您没有正确导入 firestore,也没有以适当的方式初始化模拟器。您正在正确导入 Firebase 函数,但有几处需要更改。
我将参考 Firebase 版本 9,因为它是应该使用的版本,如果您仍想使用版本 8,我将留下参考资料供您选择要使用的版本。
Instrument your app to talk to the emulators
Set up your in-app configuration or test classes to interact with Cloud Firestore as follows.
import { `getFirestore`, connectFirestoreEmulator } from "firebase/firestore";
// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, 'localhost', 8080);
当你 initialize Firebase 使用 npm 安装 firebase 后,你需要这样做。
const app = initializeApp(firebaseConfig);
和...
Initialize Cloud Firestore
Initialize an instance of 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);
我已经尝试了 Stack Overflow 及以后的几乎所有解决方案,但仍然出现错误。 我已经设置并确认模拟器运行正常。但是,尝试将 React Native 应用程序连接到它 returns 错误:
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);
我什至用0.0.0.0
替换了localhost
,同样的错误。
有人建议将最后一行更改为
firebase.firestore().settings({
host: "localhost:8080",
ssl: false
});
我试过了,但仍然出现同样的错误。
请问正确的、经过验证的方法是什么?我真的很感激,因为我想花几个小时在这上面!
恐怕您没有正确导入 firestore,也没有以适当的方式初始化模拟器。您正在正确导入 Firebase 函数,但有几处需要更改。
我将参考 Firebase 版本 9,因为它是应该使用的版本,如果您仍想使用版本 8,我将留下参考资料供您选择要使用的版本。
Instrument your app to talk to the emulators
Set up your in-app configuration or test classes to interact with Cloud Firestore as follows.
import { `getFirestore`, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, 'localhost', 8080);
当你 initialize Firebase 使用 npm 安装 firebase 后,你需要这样做。
const app = initializeApp(firebaseConfig);
和...
Initialize Cloud Firestore
Initialize an instance of 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);