Javascript 谷歌云功能以:使用Axios时超时结束

Javascript 谷歌云功能以:使用Axios时超时结束,javascript,node.js,axios,google-cloud-functions,Javascript,Node.js,Axios,Google Cloud Functions,我想使用带有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", "

我想使用带有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);
          }
        }
      );
    }
  }
);

当我发出curlpost请求时,数据被正确地写入电子表格

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

问题

我不明白的是,当我在Vue.js中使用Axios时,Google云函数返回抛出新错误(“函数超时”)


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

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

相反,您应该做的是向客户端发送一个错误,以便函数可以正确终止,客户端可以接收错误。您可能也想考虑记录错误,因此您可以在控制台中看到出错的地方:

if(err){
res.send(500);
控制台错误(err);
}
throw err;