使用 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 模拟器用于 HostingFirestoreFunctions

我习惯在开发过程中使用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 开发时如何修复致命错误?

在 Redux 中测试动作创建者时如何模拟 Firebase SDK?

如何获取片段内在firebase中注册的用户数?

Google firebase - 如何与其他应用程序共享数据库