Saltar al contenido

obtener la dirección IP por dominio con dns.lookup() node.js

Recuerda que en las ciencias un problema casi siempere puede tener diferentes resoluciones, por lo tanto te enseñaremos lo más óptimo y mejor.

Solución:

No puede porque la función dns.lookup() funciona de forma asíncrona.

Aunque la llamada a dns.lookup() será asíncrona desde la perspectiva de JavaScript, se implementa como una llamada síncrona a getaddrinfo(3) que se ejecuta en el conjunto de subprocesos de libuv. Esto puede tener sorprendentes implicaciones de rendimiento negativas para algunas aplicaciones, consulte la documentación de UV_THREADPOOL_SIZE para obtener más información.

Hay diferentes formas de tomar el resultado. ¡Bienvenido al mundo JS!

Llamar de vuelta

dns.lookup("www.aWebSiteName.am", (err, address, family) => 
  if(err) throw err;
  printResult(address);
);

function printResult(address)
   console.log(address);

Promesa

const lookupPromise = new Promise((resolve, reject) => 
    dns.lookup("www.aWebSiteName.am", (err, address, family) => 
        if(err) reject(err);
        resolve(address);
    );
);

lookupPromise().then(res => console.log(res)).catch(err => console.error(err));

Promete asíncrono/espera

async function lookupPromise()
    return new Promise((resolve, reject) => 
        dns.lookup("www.aWebSiteName.am", (err, address, family) => 
            if(err) reject(err);
            resolve(address);
        );
   );
;

try
    cons address = await lookupPromise();
catch(err)
    console.error(err);

Esto es normal porque “dns.lookup” se ejecuta de forma asíncrona

Entonces no puedes simplemente usar el valor devuelto de la función

Debe hacer su lógica dentro de la devolución de llamada o crear un asistente para prometer la función y ejecutarla en función asíncrona con espera.

Algo como esto:

function lookup(domain) 
  return new Promise((resolve, reject) => 
    dns.lookup(address, (err, address, family) => 
      if (err) 
        reject(err)
       else 
        resolve( address, family )
      
    )
  )


async function test() 
  let ipAddress = await lookup(("www.aWebSiteName.am");

EDITAR:

También puedes usar:

const dns = require('dns');
dnsPromises = dns.promises;

async function test() 
  let data = await dnsPromises.lookup(("www.aWebSiteName.am");

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *