使用本地模拟器进行 firebase 和 expo

Wac*_*man 5 firebase react-native expo

我正在尝试使用 firebase 在本地进行模拟,以测试我正在与 expo 合作的 React Native 应用程序。为此,我尝试将函数和 firestore 的主机设置为本地主机上的正确端口。

经过多次迭代,我终于找到了一个奇怪的导入和调用组合,没有错误。但是,当我尝试使用 expo 运行它时,我的应用程序显示为空白屏幕,没有错误。我现在很迷茫,firebase 文档也很混乱。

这是我当前的index.js:

import firebase from "firebase"
import 'firebase/firestore';
import 'firebase/functions';
import 'firebase/app';


const config = {
    //config info
  };
const fb = firebase.initializeApp(config);
const firestore = firebase.firestore();
const functions = firebase.functions();

if(__DEV__){
  firestore.settings({
    host : "localhost:9000",
    ssl : false
  });
  functions.useFunctionsEmulator("http://localhost:5001");
}
const auth = fb.auth();

export { auth, functions, firestore }
Run Code Online (Sandbox Code Playgroud)

导入非常奇怪,我不理解它们,但我从另一个堆栈溢出线程获取它们,这是唯一使它到达文件末尾的东西。关于设置本地模拟器,我是否遗漏了一些非常明显的东西?

a.s*_*ett 0

我可以通过以下方式让它在我的机器上工作:

import * as firebase from 'firebase';
import '@firebase/firestore';
import '@firebase/functions';

const firebaseConfig = { /* config data */ }
firebase.initializeApp(firebaseConfig);
firebase.firestore().settings({ host: "localhost:8080", ssl: false });
firebase.functions().useFunctionsEmulator('http://localhost:5001');
Run Code Online (Sandbox Code Playgroud)

在您的尝试中,我认为您的问题可能是您声明的方式:

const fb = firebase.initializeApp(config);

然后忘记使用初始化的fb--而是firebase再次使用。

尝试更改这些行:

const firestore = firebase.firestore();
const functions = firebase.functions();
Run Code Online (Sandbox Code Playgroud)

对此:

const firestore = fb.firestore();
const functions = fb.functions();
Run Code Online (Sandbox Code Playgroud)

或者直接使用firebase类而不是设置变量。


编辑

我注意到我的 firestore 存储host值实际上设置不正确,所以我在上面编辑了它 - 我已添加http://到开头,但这不是您想要的参数。

注意 - 如果您想准确了解您的开发环境在尝试连接到本地 Firestore 时正在执行的操作,请添加以下行: firebase.firestore.setLogLevel('debug');