gpt4 book ai didi

node.js - 使用 Firebase Cloud Functions 从外部 API 获取数据(超时)

转载 作者:太空宇宙 更新时间:2023-11-04 01:24:26 24 4
gpt4 key购买 nike

这是我的代码:

const functions = require('firebase-functions');
const axios = require('axios');
const cors = require('cors')({ origin: true });

exports.apistatus = functions
.region('europe-west1')
.https.onRequest((req, res) => {

cors(req, res, () => {
if (req.method !== "GET") {
return res.status(401).json({
message: "Not allowed"
});
}

return axios.get('https://api.bsmsa.eu/ext/api/bsm/gbfs/v2/en/station_status')
.then(response => {
console.log(response.data);
return res.status(200).json(
response.data
)
})
.catch(err => {
return res.status(500).json({
error: err
})
})

})
// ! res.end();
});

我已经在使用 Blaze Plan,但当我调用它时我总是得到这个>>函数执行花费了 60002 毫秒,完成状态为:“超时”。

如果我尝试像文档中所述的那样使用 res.send() 或 res.end() 终止该函数,则会收到此错误:错误:发送后无法设置 header 。

当我尝试获取其他 API 时,它工作正常。

最佳答案

在 cors() 函数调用之前需要一个 return 关键字。

exports.apistatus = functions
.region('europe-west1')
.https.onRequest((req, res) => {

return cors(req, res, () => { // <------ RETURN NEEDED HERE
if (req.method !== "GET") {
return res.status(401).json({
message: "Not allowed"
});
}

return axios.get('https://api.bsmsa.eu/ext/api/bsm/gbfs/v2/en/station_status')
.then(response => {
console.log(response.data);
return res.status(200).json(
response.data
)
})
.catch(err => {
return res.status(500).json({
error: err
})
})

})
});

您的 axios 代码正在执行,我怀疑它正在收到响应,但由于您没有从 CORS 返回结果,因此“父”云函数永远不知道任务已完成。

This example显示了来自官方 Firebase GitHub 的示例,他们在其中使用 Cors。

关于node.js - 使用 Firebase Cloud Functions 从外部 API 获取数据(超时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58080936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com