Error in the request

Asked

Viewed 705 times

0

Hello I have a small problem and the following I am creating a firebase cloud Function that makes a request here the code:

const functions = require('firebase-functions');
var axios = require('axios');
exports.get_video_info = functions.https.onCall(function(data){

  var url = "https://youtube.com/get_video_info?video_id="+data.id;
  return axios.get(url)
});

But when I call the function appears the following error in google cloud:

Unhandled error { Error: getaddrinfo EAI_AGAIN youtube.com:443
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:67:26)
  errno: 'EAI_AGAIN',
  code: 'EAI_AGAIN',
  syscall: 'getaddrinfo',
  hostname: 'youtube.com',
  host: 'youtube.com',
  port: 443,
  config: 
   { adapter: [Function: httpAdapter],
     transformRequest: { '0': [Function: transformRequest] },
     transformResponse: { '0': [Function: transformResponse] },
     timeout: 0,
     xsrfCookieName: 'XSRF-TOKEN',
     xsrfHeaderName: 'X-XSRF-TOKEN',
     maxContentLength: -1,
     validateStatus: [Function: validateStatus],
     headers: 
      { Accept: 'application/json, text/plain, */*',
        'User-Agent': 'axios/0.18.0' },
     method: 'get',
     url: 'https://youtube.com/get_video_info?video_id=R3cbfZKfmkE',
     data: undefined },
  request: 
   Writable {
     _writableState: 
      WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: false,
        ended: false,
        finished: false,
        destroyed: false,
        decodeStrings: true,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: true,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: null,
        writelen: 0,
        bufferedRequest: null,
        lastBufferedRequest: null,
        pendingcb: 0,
        prefinished: false,
        errorEmitted: false,
        bufferedRequestCount: 0,
        corkedRequestsFree: [Object] },
     writable: true,
     domain: 
      Domain {
        domain: null,
        _events: [Object],
        _eventsCount: 1,
        _maxListeners: undefined,
        members: [] },
     _events: 
      { response: [Function: handleResponse],
        error: [Function: handleRequestError] },
     _eventsCount: 2,
     _maxListeners: undefined,
     _options: 
      { maxRedirects: 21,
        maxBodyLength: 10485760,
        protocol: 'https:',
        path: '/get_video_info?video_id=R3cbfZKfmkE',
        method: 'get',
        headers: [Object],
        agent: undefined,
        auth: undefined,
        hostname: 'youtube.com',
        port: null,
        nativeProtocols: [Object],
        pathname: '/get_video_info',
        search: '?video_id=R3cbfZKfmkE' },
     _ended: true,
     _ending: true,
     _redirectCount: 0,
     _redirects: [],
     _requestBodyLength: 0,
     _requestBodyBuffers: [],
     _onNativeResponse: [Function],
     _currentRequest: 
      ClientRequest {
        domain: [Object],
        _events: [Object],
        _eventsCount: 6,
        _maxListeners: undefined,
        output: [],
        outputEncodings: [],
        outputCallbacks: [],
        outputSize: 0,
        writable: true,
        _last: true,
        upgrading: false,
        chunkedEncoding: false,
        shouldKeepAlive: false,
        useChunkedEncodingByDefault: false,
        sendDate: false,
        _removedConnection: false,
        _removedContLen: false,
        _removedTE: false,
        _contentLength: 0,
        _hasBody: true,
        _trailer: '',
        finished: true,
        _headerSent: true,
        socket: [Object],
        connection: [Object],
        _header: 'GET /get_video_info?video_id=R3cbfZKfmkE HTTP/1.1\r\nAccept: application/json, text/plain, */*\r\nUser-Agent: axios/0.18.0\r\nHost: youtube.com\r\nConnection: close\r\n\r\n',
        _onPendingData: [Function: noopPendingOutput],
        agent: [Object],
        socketPath: undefined,
        timeout: undefined,
        method: 'GET',
        path: '/get_video_info?video_id=R3cbfZKfmkE',
        _ended: false,
        res: null,
        aborted: undefined,
        timeoutCb: null,
        upgradeOrConnect: false,
        parser: null,
        maxHeadersCount: null,
        _redirectable: [Circular],
        [Symbol(outHeadersKey)]: [Object] },
     _currentUrl: 'https://youtube.com/get_video_info?video_id=R3cbfZKfmkE' },
  response: undefined }

I don’t know what else to do.

1 answer

0


This may be related to the Firebase Cloud plan. There is a limitation of access to Apis when the plan is free. This post describes a problem like yours:

https://stackoverflow.com/questions/40182121/error-getaddrinfo-eai-again

One of the ways to get around this problem without having to upgrade the plan would be to change the API address, rather than accessing the youtube.com domain endpoints, to use the googleapis.com domain Apis.

The tutorial link below, done this month, shows how to do this. In this link, you used Powershell to access the API, but you can only consider the addresses it accessed and use Axios to communicate

https://lazywinadmin.com/2019/04/retrieving_youtube_videos_information_with_powershell.html#

  • After I saw your reply I went to search and on the Google Cloud website about the price I saw that on the free plan can only make calls to the Google Apis

Browser other questions tagged

You are not signed in. Login or sign up in order to post.