使用 firebase 模拟器时如何共享指向 firebase 开发环境的链接?
Posted
技术标签:
【中文标题】使用 firebase 模拟器时如何共享指向 firebase 开发环境的链接?【英文标题】:How to share a link to a firebase development environment when using firebase emulators? 【发布时间】:2021-02-25 13:39:21 【问题描述】:在我的本地开发环境中,我将 Firebase 模拟器用于 Hosting、Firestore 和 Functions。
我习惯在开发过程中使用ngrok
与其他人共享链接。我还在开发过程中使用它在移动设备上进行测试。
这是脚本:
"share": "ngrok http 80 -host-header=\"dev.myproject.com:80\"",
它可以很好地重定向到我的开发域主机,即dev.myproject.com
。
但是,当您通过不同的设备(即不同的 PC 或移动设备)访问此链接时,模拟器服务将变得不可用。
显然,firebase
包正在寻找那些仅在我的本地环境中运行的 localhost
模拟器。
在这种情况下,解决方法是什么?使用 firebase 模拟器时如何与其他人/其他设备共享开发环境?有没有容易做到的?
我是否必须创建一个额外的 Firebase 项目来部署测试版本及其数据和文件?人们通常如何处理这个问题?
【问题讨论】:
【参考方案1】:我们目前也在尝试使用ngrok
来实现这一点。
我们几乎没有测试它是否有效,到目前为止它正在这样做。因此,我将与您分享我们的工作。
我们所做的是
启动模拟器firebase emulators:start
(如果使用--import seedData
)
使用ngrok 将您的服务器暴露在互联网上,首先使用./ngrok http http://localhost:5001
启动它(检查您的firebase.json
以查看您的emulators.functions
暴露了哪个端口,在我的例子中是端口5001)
这会输出两个URLs
,格式如下https://[TWILIOADRESS].ngrok.io
为了能够通过其唯一的 URL 调用实现的 https function
,请将其附加到提供的 ngrok URL:[project-id]/[project-implemented-region]]/[cloud-function-name]
您最终会得到一个如下所示的URL
:
https://92003e41ecb0.ngrok.io/my-project-id/us-central1/cloudFunctionToExecute
现在您可以使用此 URL 向公开的函数模拟器发出请求(在我的例子中是来自邮递员)
如果一切正常,您应该会在运行模拟器的终端上看到一些日志,告诉您该函数已执行,例如:
functions: Beginning execution of "us-central1-cloudFunctionToExecute
您还可以从启动 ngrok 时提供的 UI 终端检查有关通过隧道建立的连接的状态和指标信息。 ngrok 提供了一个实时 Web UI,您可以在其中内省在您的隧道上运行的所有 HTTP 流量。启动 ngrok 后,只需在 Web 浏览器中打开 http://localhost:4040
即可查看请求详细信息
【讨论】:
以上是关于使用 firebase 模拟器时如何共享指向 firebase 开发环境的链接?的主要内容,如果未能解决你的问题,请参考以下文章
将 Firebase 图像 URI 共享给其他应用时共享失败?
使用 Firebase 进行 iOS 开发时如何修复致命错误?