【问题标题】:Google Cloud Functions finishes with: timeout when using AxiosGoogle Cloud Functions 结束时:使用 Axios 时超时
【发布时间】:2020-01-31 00:28:54
【问题描述】:

我想使用带有 http 触发器的 Google Cloud 函数将数据写入 Google 电子表格。

以下代码是我的云函数:

exports.writeDataMaterialCollection = functions.https.onRequest(
  (req, res) => {
    if (req.method === "POST") {
      console.log(req.body);
      res.set("Access-Control-Allow-Origin", "*");
      const sheets = google.sheets({ version: "v4" });
      var jwt = getJwt();
      var apiKey = getApiKey();
      var spreadsheetId = "sheetIDxxxxxxxxx";
      var range = "A:L";
      var row = ["data"];
      sheets.spreadsheets.values.append(
        {
          spreadsheetId: spreadsheetId,
          range: range,
          auth: jwt,
          key: apiKey,
          valueInputOption: "RAW",
          resource: { values: [row] }
        },
        (err, result) => {
          if (err) {
            throw err;
          } else {
            console.log(result.data.updates.updatedRange);
            res.status(200).send(result.data.updates.updatedRange);
          }
        }
      );
    }
  }
);

当我发出 curl POST 请求时,数据会正确写入电子表格。

url -d '{"test": "wert"}' -X POST http://localhost:5001/XXXX/writeDataMaterialCollection

问题

我不明白的是,当我在 Vue.js 中使用 Axios 时,Google Cloud Function 返回 throw new Error("Function timed out.")

axios(
        "http://localhost:5001/XXXXX/writeDataMaterialCollection",
        {
          method: "POST",
          headers: {
            "content-type": "application/json",
            "Access-Control-Allow-Origin": "*"
          },
          data: {
            daten1: 23
          }
        }
      ).then(response => (self.writeDataResult = response));

【问题讨论】:

    标签: javascript node.js axios google-cloud-functions


    【解决方案1】:

    如果你的函数到达这一行:

    throw err;
    

    它实际上不会终止函数并将错误传播给客户端。那是因为您从回调函数中抛出错误,而不是主函数。这也意味着该函数将超时,因为没有向客户端发送响应。

    您应该做的是向客户端发送错误,以便函数可以正确终止,并且客户端可以接收错误。您可能还需要考虑记录错误,以便在控制台中查看问题所在:

    if (err) {
      res.send(500);
      console.error(err);
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-03
      • 2020-08-18
      • 2018-01-03
      • 2019-12-31
      • 2018-04-19
      • 2017-08-26
      • 2018-03-10
      • 2021-05-26
      • 2019-08-14
      相关资源
      最近更新 更多