您可以运行可从公共IP访问的/host firebase模拟器吗?

2024-01-12

我正在使用 firebase 模拟器在我的计算机上托管一些 GCF 功能。它们被配置为在 localhost:5001 上运行/托管。这很好用。

我现在在我的应用程序中使用 Google Tasks,并且我的任务需要调用 GCF 函数。任务不在本地运行,因此我将我的计算机设置为通过公共 IP 地址访问,并打开端口 5001 以允许该端口上的流量进入。这个想法是Google任务可以调用我机器上的函数,这样我就可以正确测试。

我似乎无法让模拟器与任何外部公共 IP 地址一起工作。这是不可能的吗?如果可以,我该如何配置?

已更新,这里没有太多代码可供查看...我只是想知道您是否可以将模拟器配置为侦听公共端口。这是默认的 firebase.json 文件

   {
     "functions": {
        "predeploy": [
         "npm --prefix \"$RESOURCE_DIR\" run lint"
    ],
    "source": "functions"
  },
  "emulators": {
    "functions": {
      "port": 5001
    },
    "pubsub": {
      "port": 8085
    },
    "ui": {
      "enabled": true
    }
  }
}

在我的研究中,我发现你可以添加“host”属性来允许你的本地网络使用“host”:“0.0.0.0”访问模拟器,所以它看起来像这样:这可以允许通过我的本地IP进行访问,例如http://192.168.1.216:5001 http://192.168.1.216:5001

{
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint"
    ],
    "source": "functions"
  },
  "emulators": {
    "functions": {
      "port": 5001,
      "host": "0.0.0.0"
    },
    "pubsub": {
      "port": 8085
    },
    "ui": {
      "enabled": true
    }
  }
}

现在,使用我的公共 IP(使用 NAT FORWARDING 设置),它无法访问该站点http://108.49.78.181:5001 http://108.49.78.181:5001

没有那么多代码,这可能吗?如果是的话,我希望能举一些例子来说明如何做到这一点。


访问该函数应该是这样的

http://localhost:5001/{project_name}/us-central1/{function_name}

{project_name} 必须替换为 .firebaserc 中项目的名称
{function_name} 必须替换为从 js 文件导出的函数名称

要求http://localhost:5001/直接应该返回Not Found

从外部IP访问

使用带有“0.0.0.0”的主机意味着服务器将监听所有IP地址。

默认情况下,firebase 仅接受 localhost,但您可以通过使用每个特定模拟器的 firebase.json 中的主机选项来更改此设置。

"hosting": {
   "port": 5000,
   "host": "0.0.0.0"
},
"functions": {
   "port": 5001,
   "host": "0.0.0.0"
}

以及其他类似 firestore、auth、ui、数据库...

启动模拟器

 firebase emulators:start

不要忘记将路由器端口转发到运行模拟器的计算机的本地 IP,并接受防火墙中的端口

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您可以运行可从公共IP访问的/host firebase模拟器吗? 的相关文章

随机推荐