Firebase的云功能 - getaddrinfo ENOTFOUND

use*_*376 48 dns paypal node.js firebase google-cloud-functions

尝试使用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);
            }
        });
     });
});
Run Code Online (Sandbox Code Playgroud)

但我经常收到一个错误:

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)
Run Code Online (Sandbox Code Playgroud)

我试过的事情:

  1. 仍然是向完全不同的主机提出请求 ENOTFOUND
  2. 用包装请求 cors(req,res, ()=>{...})
  3. 预先https://主持人

问题是什么?

Jam*_*els 110

您需要制定付费计划才能发出外部API请求.

Firebase的Blaze计划(按需付费)可以免费分配云功能.https://firebase.google.com/pricing/

  • 这为我节省了一两个小时的调试时间.谢谢! (4认同)
  • 您应该在功能日志上看到警告+它可能隐藏在某个地方的定价页面上.顺便说一下,我是Firebase云功能的DevRel;) (3认同)
  • 脚注3:Spark计划仅允许向Google拥有的服务发出出站网络请求.在Blaze计划中,云功能提供永久免费套餐. (2认同)
  • 谢谢你的详细信息 真的很感激.一旦我拿出我的信用卡,它就像预期的那样工作! (2认同)
  • 托管在另一个项目的云函数上的api调用是否相同?当我对`https:// us-central1-joanne-lee.cloudfunctions.net / getUrls / portrait`进行同构提取时,我收到“ getaddrinfo ENOTFOUND”错误。 (2认同)