【问题标题】:cloud function testing failing "Invalid request, unable to process."云功能测试失败“无效请求,无法处理”。
【发布时间】:2021-12-17 21:58:44
【问题描述】:

我已经编写了一个简单的云函数,我也已经将它部署到了 firebase 并且代码可以正常工作。就是下面这个函数:

exports.testfunction = functions.https.onCall(async (data) => {
     const mydata = JSON.parse(data)
     const mydata1 = JSON.parse({const1: "AAA", const2: "BBB", const3: "CCC"})
     return{mydata1}
 });

现在我想在本地测试此功能,我在终端中运行以下命令:firebase emulators:start,到目前为止我没有收到任何错误。无论如何,只要我尝试在浏览器中使用 http://localhost:5001/MYPROJECTNAME/us-central1/testfunction 调用该函数,我就会收到以下错误消息,但我找不到任何解决方法:

{"error":{"message":"Bad Request","status":"INVALID_ARGUMENT"}}

问题是,如果我部署它并从我的应用程序内部调用它,该函数本身运行良好,但我无法从控制台内的 firebase 模拟器运行它。 我在这里做错了什么?

【问题讨论】:

  • 这不是 - stackoverflow.com/questions/62091410/… - 回答你的问题吗?
  • @raina77ow 它朝着正确的方向发展。那里的答案建议为调用本身添加一个参数,但是如果我只是将链接复制粘贴到浏览器中,我该怎么做呢?如果这个评论听起来有点愚蠢,我很抱歉,我真的很陌生,我很难理解这些云功能。

标签: javascript firebase react-native google-cloud-functions


【解决方案1】:

documentation for Callable Cloud Functions中所述:

请务必记住,HTTPS 可调用函数是 类似但不等同于 HTTP 函数。使用 HTTPS 可调用 您必须将客户端 SDK 与您的平台一起使用的功能 functions.https 后端 API(或实现协议)。

所以,如果你想通过它的 URL 直接调用该函数,你的 HTTP 请求需要遵循protocol specification for https.onCall

【讨论】:

  • 对不起,我对这个话题很陌生,我无法从文档中找出我做错了什么。我理解你的观点,HTTPS 与 onCall 不同,但我无法真正理解我应该改变什么(无论是在我的测试函数中还是在我在浏览器中执行的调用中)以使其工作。你能给我一点提示吗?我应该关注什么?
  • 为什么需要通过其URL调用callable Cloud Function?您应该从您的应用中调用它,通过 SDK。如果你真的需要通过它的 URL 调用这个函数,修改它为 HTTPS 的。
猜你喜欢
  • 2018-07-03
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
相关资源
最近更新 更多