【问题标题】:Firebase: how to debug onCall functions?Firebase:如何调试 onCall 函数?
【发布时间】:2018-12-16 10:18:53
【问题描述】:

我正在使用 Google Cloud Functions Emulator 在本地调试我的 Firebase 函数。 Firebase 建议使用 functions.https.onCall functions 而不是 functions.https.onRequest 以避免直接使用 http 调用。相反,Firebase 建议使用 Firebase Functions SDK 从代码中调用此类函数。 对于functions.https.onRequest,我使用了http-trigger 标志,但如何调试onCall 函数?

【问题讨论】:

  • 什么是http-trigger,您是如何使用它的?您是在问是否可以在模拟器中测试可调用函数?
  • @DougStevenson 我的意思是指挥。这个完整的命令是:functions deploy helloWorld --trigger-http。但这不适用于 onCall 函数。所以是的,问题是:如何在模拟器中测试可调用函数?
  • 我不知道那个命令是什么。这看起来根本不像使用 Firebase CLI。
  • @DougStevenson 是的,因为这是模拟器命令。 Firebase 官方文档指的是我上面提到的模拟器:firebase.google.com/docs/functions/local-emulator Firebase 指的是使用onCall 函数,如果我想从 web-SDK 或任何其他平台 SDK 调用它们而不是 onRequest。但是由于缺少任何调试能力,我找不到任何如何实际开发此类功能的示例。
  • 目前无法在本地调试可调用对象。该团队正在为此努力。但我仍然不明白那个命令是什么。它不是您链接的文档的一部分。听起来您可能正在混淆 Firebase CLI 和 gcloud。

标签: firebase google-cloud-functions


【解决方案1】:

我找到了一种在本地运行“onCall”云功能并从本地客户端调用它们的方法。我还没有弄清楚如何附加调试器,但至少我可以更快地迭代并使用 console.log 语句。

使用firebase serve 托管函数。尽管这些应该是针对 http 请求的,但我发现 firebase 客户端有一个属性可以覆盖 onCall 函数的主机名。这将负责身份验证并为您传递正确的数据和上下文对象。

从 Firebase 项目文件夹根目录中的终端:

firebase serve

您应该在终端窗口中获​​得成功的结果。获取主机名和端口号:

✔ functions: helloWorld: http://localhost:5000/your-project-name/us-central1/helloWorld

iOS 客户端:

Functions.functions().useFunctionsEmulator(origin: "http://localhost:5000")

注意:您必须在 iOS 中禁用 App Transport Security 才能正常工作

注意:其他客户端可能具有相同的 API。

【讨论】:

  • 感谢您指向useFunctionsEmulator。你知道如何附加调试器了吗?我发现本指南可能有用,但它也假定 https 请求功能:/ medium.com/@mwebler/…
  • 不,我从来没有弄明白,从那以后也没有再访问过。
猜你喜欢
  • 2021-04-10
  • 2018-11-02
  • 2022-09-26
  • 2019-01-26
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
相关资源
最近更新 更多