node.js-Firebase的云函数-getaddrinfo ENOTFOUND

尝试使用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)

我尝试过的事情:

  1. 向完全不同的主机发出请求,仍然是cors(req,res, ()=>{...})
  2. cors(req,res, ()=>{...})包装请求
  3. 在主机之前添加https://

问题是什么?

3个解决方案
109 votes

您需要按照付费计划进行外部API请求。

Firebase的Blaze计划(随用随付)免费分配了Cloud Functions。 [https://firebase.google.com/pricing/]

James Daniels answered 2020-06-24T09:09:54Z
1 votes

在我的情况下,我不得不等待,让过去发生的一切滞后过去。 现在又好了。

Levi Winans answered 2020-06-24T09:10:15Z
0 votes

您需要将服务帐户包括到管理员初始化中。 这为我解决了相同的问题

EngrEric answered 2020-06-24T09:10:35Z
translate from https://stackoverflow.com:/questions/42774807/cloud-functions-for-firebase-getaddrinfo-enotfound