从本地网络访问firebase emulator

从本地网络访问firebase emulator,firebase,google-cloud-functions,firebase-tools,Firebase,Google Cloud Functions,Firebase Tools,我正在使用firebase模拟器:startfirebase命令在本地模拟函数。这在iOS模拟器上运行良好,但如果我使用同一网络中的真实android设备,这些功能是无法实现的。我可以像这样访问5001端口:locahost:5001,但不能像这样:192.168.x.x:5001 我的react native expo项目中有以下代码: export const functions = firebase.functions(); firebase.functions().useFunction

我正在使用
firebase模拟器:start
firebase命令在本地模拟函数。这在iOS模拟器上运行良好,但如果我使用同一网络中的真实android设备,这些功能是无法实现的。我可以像这样访问
5001
端口:
locahost:5001
,但不能像这样:
192.168.x.x:5001

我的react native expo项目中有以下代码:

export const functions = firebase.functions();
firebase.functions().useFunctionsEmulator('http://192.168.x.x:5001');
但是,如果我将最后一行更改为:

firebase.functions().useFunctionsEmulator('http://localhost:5001');

是否可以使用类似于
firebase-serve
命令中的
--host
选项启动仿真器?是否有其他解决方案?

要在不同于
默认值:localhost
的主机上侦听,只需检查
--help

$firebase服务--帮助
用法:发球[选项]
为静态资产启动本地服务器
选项:
-p、 --端口要侦听的端口(默认值:5000)(默认值:5000)
-o、 --主机要侦听的主机(默认值:localhost)(默认值:localhost)
--仅服务于指定目标(有效目标为:函数、宿主)
--除服务于除指定目标以外的所有目标(有效目标为:函数、宿主)
-h、 --帮助输出使用信息
在这种情况下:

firebase.functions().useFunctionsEmulator('http://0.0.0.0:5001');


因为
0.0.0.0
意味着将您的firebase.json设置为

"emulators": {
    "functions": {
      "port": 5001,
      "host": "0.0.0.0"
    },
    "firestore": {
      "port": 8080
    },
    "database": {
      "port": 9000,
      "host": "0.0.0.0"
    },
    "hosting": {
      "port": 5000
    }
  }
“0.0.0.0”主机告诉您的计算机同时为您的网络使用本地主机和本地ip


查看Android FirebaseDatabase library changelog(19.1.0版解释了这一新功能)

以Conner的答案为基础-如果您在物理设备上进行测试,您将有更好的时间使用计算机的IP地址进行连接。您可以使用内置变量:
Constants.manifest.debuggerHost?.split(“:”).shift()
,而不是硬编码

在这里写了一个简短的解释:


可能重复的我不认为这是重复的
firebase serve
与firebase
模拟器:start
不同。我仍然看不出这两个问题在主要目标上有什么区别,并且有一个很好的答案。@KingJulien你们都找到解决方案了吗?@KingJulien实际上我昨天就找到了哈哈。。。设置“模拟器”:{“函数”:{“端口”:5001,“主机”:“0.0.0.0”},“firestore”:{“端口”:8080},“数据库”:{“端口”:9000,“主机”:“0.0.0.0”},“主机”:{“端口”:5000}在我的回答中,
firebase服务的原因是:“是否可以使用类似于
firebase serve
命令中的
--host
选项启动模拟器?”你就是那个人!谢谢!
"emulators": {
    "functions": {
      "port": 5001,
      "host": "0.0.0.0"
    },
    "firestore": {
      "port": 8080
    },
    "database": {
      "port": 9000,
      "host": "0.0.0.0"
    },
    "hosting": {
      "port": 5000
    }
  }