Firebase 的云函数 - getaddrinfo ENOTFOUND
Posted
技术标签:
【中文标题】Firebase 的云函数 - getaddrinfo ENOTFOUND【英文标题】:Cloud Functions for Firebase - getaddrinfo ENOTFOUND 【发布时间】:2019-08-13 09:17:55 【问题描述】:尝试使用 PayPal-node-SDK 向 Paypal 的 API 发出请求
exports.requestPayment = functions.https.onRequest((req, res) =>
return new Promise(function (fullfilled, rejected)
paypal.payment.create(create_payment_json, , function (error, payment)
if (error)
rejected(error);
else
console.log("Create Payment Response");
console.log(payment);
res.status(200).send(JSON.stringify(
paymentID: payment.id
)).end();
fullfilled(payment);
);
);
);
但我经常遇到错误:
Error: getaddrinfo ENOTFOUND api.sandbox.paypal.com api.sandbox.paypal.com:443
at errnoException (dns.js:28:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
我尝试过的事情:
-
向完全不同的主机发出请求,仍然是
ENOTFOUND
用cors(req,res, ()=>...)
包装请求
在主机前添加https://
有什么问题?
【问题讨论】:
【参考方案1】:您需要使用付费计划才能发出外部 API 请求。
Firebase 的 Blaze 计划(即用即付)为 Cloud Functions 提供免费配额。 https://firebase.google.com/pricing/
【讨论】:
您应该会在函数日志中看到警告 + 它可能隐藏在定价页面的某处。顺便说一句,我是 Firebase 的 Cloud Functions 开发人员;) 脚注 3:Spark 计划仅允许向 Google 拥有的服务发出出站网络请求。在 Blaze 计划中,Cloud Functions 提供永久免费层。 感谢您的详细信息!真的很感激。一旦我拿出我的信用卡,它就按预期工作了! 这为我节省了额外一两个小时的调试时间。谢谢! 对托管在另一个项目的云功能上的 api 的调用是否相同?当我对https://us-central1-joanne-lee.cloudfunctions.net/getUrls/portrait
进行同构提取时,我收到getaddrinfo ENOTFOUND
错误【参考方案2】:
在我的情况下,我不得不等待,让发生的任何滞后都过去。现在又好了。
【讨论】:
【参考方案3】:您需要在管理员初始化中包含服务帐户。这为我解决了同样的问题
【讨论】:
网络连接中的某些延迟也会导致此问题 是的。我第一次遇到这个错误。当我阅读此评论时,第二次它没有任何变化。 :)【参考方案4】:在产生任何费用之前切换到 Firebase“Blaze”计划,其中包括 free usage tier of the Spark plan。使用Blaze pricing calculator 查看给定使用量您需要支付的费用。
前 5GB 出站(出口)网络是免费的,这与“原生”Google Cloud Functions would give you 相同。
【讨论】:
【参考方案5】:我遇到这个问题是因为网络太弱,请更改网络连接。
【讨论】:
以上是关于Firebase 的云函数 - getaddrinfo ENOTFOUND的主要内容,如果未能解决你的问题,请参考以下文章
使用 Firebase CLI shell 测试可调用的云函数
如何使用以 TypeScript for Firebase Realtime 数据库编写的云函数从 onCreate 触发以外的节点获取数据?