我想做一个Google Cloud函数,为我调用一个外部API。在对Google做了一些研究之后,我找到了使用Axios的方法。当我在自己的节点上使用它时,调用实际上是有效的,但当我想将该函数部署到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被添加到了错误的packageiderjson文件中。不幸的是,另一个packageiderjson文件成功地到达了服务器,我最终得到了一个包。json文件没有必要的服务器依赖关系,因此导致错误发生。
1条答案
按热度按时间fumotvh31#
我没有测试您的代码,但是您应该在
then()
块中返回“something”(一个值、null
、一个Promise等),以向云函数平台指示异步工作已经完成。有关更多详细信息,请参见文档中的here。您可能希望在
then()
中做更多的事情,而不仅仅是记录值,例如,调用异步Firebase方法来写入数据库(Firestore或RTDB):在这种情况下,请注意返回该方法返回的Promise。