【发布时间】:2019-01-27 20:31:52
【问题描述】:
我在 Firebase Cloud Function 中尝试了以下方法来执行 Axios 请求,但没有成功。
const functions = require('firebase-functions');
const axios = require('axios');
const cors = require('cors')({ origin: true });
exports.checkIP = functions.https.onRequest((req, res) => {
cors(req, res, () => {
if( req.method !== "GET" ) {
return res.status(401).json({
message: "Not allowed"
});
}
return axios.get('https://api.ipify.org?format=json')
.then(data => {
console.log(data)
res.status(200).json({
message: data.ip
})
})
.catch(err => {
res.status(500).json({
error: err
})
})
})
})
我还搜索了很多关于如何将 Axios 与 Cloud Functions 结合使用的示例,但没有找到。上面的代码没有返回任何东西。
谁能帮忙?
P.S.:我已经在我的 Firebase 帐户中添加了账单明细,并且没有使用免费的 Spark 计划,而是使用 Blaze 计划。
编辑:
我终于能够使用request-promise 节点包做到这一点,但仍然不知道如何使用axios 做到这一点。无论我尝试什么,axios 在 Firebase 云功能中都不起作用。这就是我所做的:
npm i --save cors request request-promise
然后这是我运行的代码:https://gist.github.com/isaumya/0081a9318e4f7723e0123f4def744a0e
也许它会帮助某人。如果有人知道如何使用Axios,请在下面回答。
【问题讨论】:
-
您是否使用付费计划(Flame 或 Blaze)?如果不是,您将无法从 Cloud Function 调用外部服务。请参阅firebase.google.com/pricing“Spark 计划仅允许向 Google 拥有的服务发出出站网络请求。”
-
是的,我是添加账单明细的付费计划。所以事实并非如此。
-
尝试从您的请求处理程序返回一个承诺,例如
return axios.get ... -
嗨@JamesPoag,试过但没用。
-
@JamesPoag 检查上面的更新代码。还是不行。
标签: firebase google-cloud-functions