javascript - 使用 firebase 模拟器时如何共享指向 firebase 开发环境的链接?
问题描述
在我的本地开发环境中,我将 Firebase 模拟器用于Hosting、Firestore和Functions。
我习惯在开发过程中使用ngrok
. 我还在开发过程中使用它在移动设备上进行测试。
这是脚本:
"share": "ngrok http 80 -host-header=\"dev.myproject.com:80\"",
就重定向到我的开发域主机(即dev.myproject.com
.
但是,当您通过不同的设备(即:不同的 PC 或移动设备)访问此链接时,模拟器服务将变得不可用。
显然,该firebase
软件包正在寻找那些localhost
仅在我的本地环境中运行的模拟器。
在这种情况下,解决方法是什么?使用 firebase 模拟器时如何与其他人/其他设备共享开发环境?有没有容易做到这一点?
我是否必须创建一个额外的 Firebase 项目来部署测试版本及其数据和文件?人们通常如何处理这个问题?
解决方案
我们目前也在尝试使用ngrok
。
我们几乎没有测试它是否有效,到目前为止它正在这样做。因此,我将与您分享我们的工作。
我们所做的是
- 启动模拟器
firebase emulators:start
(--import seedData
如果使用) - 首先使用ngrok将您的服务器公开到互联网上
./ngrok http http://localhost:5001
(检查您firebase.json
的以查看您emulators.functions
的公开端口,在我的情况下是端口 5001) - 这将输出两个
URLs
,格式如下https://[TWILIOADRESS].ngrok.io
- 为了能够
https function
通过其唯一的 URL 调用实现,请将其附加到提供的 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 后,只需
http://localhost:4040
在 Web 浏览器中打开以检查请求详细信息
推荐阅读
- javascript - 在 for 循环中 google-translate-api 获取随机索引值,为什么不遵循模式?
- python - Kivy:我希望窗口大小的按钮堆叠在屏幕顶部
- sum - prometheus sum after rate 功能背后的逻辑是什么?
- apache-kafka - Kafka Stream 只消费 N 条消息
- javascript - 使用 JS 使用正则表达式创建数字仍然创建重复数字
- r - 如何读取文件夹中的 .xlsm 文件,该文件夹使用 R 存在于不同文件夹中
- linux - Modbus RTU 到 Raspberry Pi/Linux 到 Modbus TCP
- javascript - 如何在 ReactJS 中定位 DOM 元素?
- python - 使用 Pandas 与 CSV 读取器/写入器处理和保存大型 CSV 文件
- excel - 在 Microsoft Excel 中单击按钮时如何在单元格中播放音频文件 (.Mp3)