你能运行/托管从公共ip访问的firebase模拟器吗



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

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

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

更新,这里没有太多代码可供查看。。。我只是想知道你是否可以将模拟器配置为在公共端口上侦听

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

在我的研究中,我发现你可以添加";主机";属性以允许您的本地网络使用"访问模拟器;主机":"0.0.0.0";,所以它看起来是这样的:这允许通过我的本地ip访问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://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中的host选项来更改这一点。

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

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

使用启动模拟器

firebase emulators:start

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

是您可以从公共IP地址或专用网络中的专用IP地址访问此地址。您所需要做的就是从firebase.json文件更改主机。

{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"emulators": {
"functions": {
"host": "192.168.0.240",
"port": 5001
},
"firestore": {
"host": "192.168.0.240",
"port": 8080
},
"ui": {
"host": "192.168.0.240",
"enabled": true
},
"pubsub": {
"host": "192.168.0.240",
"port": 8085
}
}
}

现在

"host": "192.168.0.240",

这可以是任何IP地址或主机,如localhost10.20.0.25,或如上所述的私有IP。

相关内容

  • 没有找到相关文章

最新更新