How to resolve hostname to an ip address in node js

Here's an example using standard modules, promises, and async/await:

import { default as dns } from 'dns';

async function getIP(hostname)
{
    let obj = await dns.promises.lookup(hostname).catch((error)=>
    {
        console.error(error);
    });
    return obj?.address;
}

async function main()
{
    let hostname = "stackoverflow.com";
    let hostIP = await getIP(hostname);
    console.log(`IP Address of ${hostname}:`, hostIP);
}
main();

You'd save this to a file ending with the extension mjs instead of js, so that node will know we're using the ES6 module's import statement instead of the commonJS require statement.


How about NodeJS documentation - DNS – have you checked it?

const dns = require('dns')

dns.lookup('testwsserver', function(err, result) {
  console.log(result)
})

Just to build on Krzysztof Safjanowski's answer,

you can also use the builtin promisify utility to convert it to a promise rather than a callback.

const util = require('util');
const dns = require('dns');
const lookup = util.promisify(dns.lookup);

try {
  result = await lookup('google.com')
  console.log(result)
} catch (error) {
  console.error(error)
}