云函数显示错误行为

问题描述 投票:0回答:1

我有两个云函数来做一些简单的簿记工作。

handleUserIn 保留用户登录的痕迹,handleUserOut 保留用户注销的痕迹。

下面是两个函数的代码:

import {onRequest} from "firebase-functions/v2/https";
import * as admin from "firebase-admin";
admin.initializeApp();

exports.handleUserIn = onRequest(
  {cors: ["*"]},
  (request, response) => {
    const userId = request.params[0];
    handleUserTrace(userId, "Log-In");
    response.status(200).send("All seems OK.");
  }); /* End of handleUserIn */


export const handleUserOut = onRequest({cors: ["*"]}, (request, response) => {
  response.set("Access-Control-Allow-Origin", "*");
  response.set("Access-Control-Allow-Methods", "GET, POST");
  const userId = request.params[0];
  // corsHandler(request, response, async () => {
  handleUserTrace(userId, "Log-Out");
  response.status(200).send("All seems OK.");
  // }); // End corsHandler.
}); /* End of handleUserOut */

现在我的问题来了。尽管这两个函数都按预期完成了工作,但当我测试它们时;我在网络浏览器的开发者控制台中收到一些烦人的消息。

就像下面这个:

GET
https://handleuserout-vzu8tf4c5q-uc.a.run.app/xyxCIPDXZXgiR6DsjWx3yFOuXYZ4
[HTTP/2 500  365ms]

GET
    https://handleuserout-vzu8tf4c5q-uc.a.run.app/xyxCIPDXZXgiR6DsjWx3yFOuXYZ4
Status
500
VersionHTTP/2
Transferred370 B (21 B size)
Referrer Policystrict-origin-when-cross-origin
Request PriorityHighest
DNS ResolutionSystem

我怀疑我在 CORS 方面做错了什么,但我对此没有信心。

有人知道问题出在哪里以及我该如何解决它吗?

更多信息。

这是我用来调用云函数handleUserIn的本地代码:

const handleUserIn = (usrid:string) => {
  var xhr = new XMLHttpRequest();
  const fnUrl = "https://handleuserin-abc3du7e9q-uc.a.run.app/" + usrid
  xhr.open("GET", fnUrl);
  xhr.send();
} /* End of handleUserIn */

我做了类似的事情来调用handleUserOut。

typescript firebase google-cloud-functions cors
1个回答
0
投票

首先,我建议删除 JSON.stringify 和 JSON.parse 的使用。他们在这里没有增加任何价值。

您(在编辑之前)向客户发送了如下回复:

response.send(0);

数字 0 并不是 Express 理解的理性反应。您应该向调用者发送实际的 HTTP 状态代码,指示函数的成功或失败级别。请参阅 response.send() 的文档。

© www.soinside.com 2019 - 2024. All rights reserved.