使用 Axios 和 Firebase Cloud Functions 调用 API



我想做一个谷歌云函数,为我调用一个外部API。在谷歌上进行了一些研究后,我找到了使用Axios的方法。调用实际上是有效的,当我在自己的nodejs上使用它时,但是当我想将函数部署到Google Cloud函数时,我总是收到错误(函数无法初始化。错误:函数已终止。

我在烈焰计划中。

const functions = require("firebase-functions");
const axios = require("axios");
exports.getData = functions.https.onRequest((req, res) => {
return axios.get("http://api.marketstack.com/v1/eod?access_key='myAccessKey'&symbols=AAPL")
.then((response) => {
const apiResponse = response.data;
if (Array.isArray(apiResponse["data"])) {
apiResponse["data"].forEach((stockData) => {
console.log(stockData["symbol"]);
});
}
}).catch((error) => {
console.log(error);
});
});

有人可以帮我吗?

编辑:我终于修复了它:错误是,我最终得到了两个package.json文件(一个在它应该在的目录中,另一个我实际上不需要)。当我使用 npm install 安装依赖项时,axios 被添加到错误的 package.json 文件中。不幸的是,另一个package.json文件进入了服务器,我最终得到了一个package.json文件,而服务器上没有必要的依赖项,因此发生了错误。

我没有测试您的代码,但您应该在then()块中返回"某些东西"(值、null、承诺等),以向云函数平台指示异步工作已完成。有关更多详细信息,请参阅文档中的此处。

exports.getData = functions.https.onRequest((req, res) => {
return axios.get("http://api.marketstack.com/v1/eod?access_key='myAccessKey'&symbols=AAPL")
.then((response) => {
const apiResponse = response.data;
if (Array.isArray(apiResponse["data"])) {
apiResponse["data"].forEach((stockData) => {
console.log(stockData["symbol"]);
});
}
return null;
}).catch((error) => {
console.log(error);
});
});

您可能想要做的不仅仅是在then()中记录值,例如调用异步 Firebase 方法写入数据库(Firestore 或 RTDB):在这种情况下,请注意返回此方法返回的 Promise。

相关内容

  • 没有找到相关文章

最新更新