如何在 https 而不是 http 上运行 firebase(函数)模拟器?
Posted
技术标签:
【中文标题】如何在 https 而不是 http 上运行 firebase(函数)模拟器?【英文标题】:How to run firebase (functions) emulator on https instead of http? 【发布时间】:2020-08-20 04:45:20 【问题描述】:有谁知道是否有一种方法可以使用 https 地址而不是默认的 http 来初始化 Firebase 函数(使用模拟器在本地调试)? 我正在尝试调试与 Telegram 机器人相关的脚本,而 Telegram 仅允许 https webhook。
Shell 输出如下:
PS C:\Users\<user>\Desktop\tmp_node\functions> firebase emulators:start --only functions
i emulators: Starting emulators: functions
+ hub: emulator hub started at http://localhost:4400
+ functions: Using node@10 from host.
+ functions: functions emulator started at http://localhost:8443
i functions: Watching "C:\Users\<user>\Desktop\tmp_node\functions" for Cloud Functions...
+ functions[<function name>]: http function initialized (http://localhost:8443/<endpoint>).
+ emulators: All emulators started, it is now safe to connect.
我需要它从 https://localhost:8443/ 开始。
非常感谢您!
【问题讨论】:
这听起来像是一个功能请求,应该被定向到 Firebase CLI GitHub。 github.com/firebase/firebase-tools 嘿@Marc 你能解决这个问题吗? 嗨@bermick 对不起,不,我不是。 @Marc 我用 ngrok 让它工作了 【参考方案1】:就像 cmets 中提到的 @bermick 一样,ngrok 是解决此问题的好方法,直到 Firebase 人员为我们提供了在本地模拟器上启用 https 的方法。步骤如下:
-
前往https://ngrok.com 并注册一个免费帐户。
下载 ngrok 二进制文件(这是他们让你下载的正常东西)。
打开控制台/终端并导航到 ngrok 二进制文件所在的文件夹。
通过运行以下命令来设置您的身份验证令牌,并将您的身份验证令牌放入:
./ngrok authtoken [[your_token]]
(https://dashboard.ngrok.com/get-started/setup 的当前页面将包含包括令牌在内的整个命令,因此您可以将其复制并粘贴到控制台中) .
如果 Firebase 仿真器套件尚未运行,请启动它,并记下云功能正在运行的端口(如果您在谷歌上搜索如何在仿真器中使用 https,我假设您知道如何执行此操作)。
返回控制台,确保您位于包含 ngrok 二进制文件的目录中并运行此命令(将 5001 替换为您机器的 firebase 函数模拟器端口)./ngrok http 5001
Ngrok 将打开一个 UI,显示您可以点击的转发 https url,它将转发到您的本地计算机。例如。 Forwarding https://xxxxxxxxx.ngrok.io -> http://localhost:5001
使用 ngrok https 转发 url 测试云功能(记得附加适当的云功能路径)。例如。 https://xxxxxxxxx.ngrok.io/my-project/us-central1/cloudFunctionName
【讨论】:
以上是关于如何在 https 而不是 http 上运行 firebase(函数)模拟器?的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio – 在 Mac OS 上通过 Wi-Fi 运行和调试构建 [重复]
为啥我的 web api 在 C# 中使用 https 而不是 http
如何强制客户端使用 http/2? (而不是回退到 http 1.1)