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)
}