node:dns and node:dns/promises match Node’s dns, including Resolver and every
resolve* record type. lookup uses the host resolver, so lookup("localhost") works offline.
Example
// dns.mjs
import { lookup } from "node:dns/promises";
import { isIP } from "node:net";
const { address, family } = await lookup("localhost", { family: 4 });
console.log(address, family);
const all = await lookup("localhost", { all: true });
console.log(all.every((entry) => isIP(entry.address) === entry.family));
elide run dns.mjs prints:
127.0.0.1 4
true
Reference
Status: Full · 17 of 20 suite tests pass (85.0%)
dns exports
Resolver, getDefaultResultOrder, getServers, lookup, lookupService, promises, resolve, resolve4, resolve6, resolveAny, resolveCaa, resolveCname, resolveMx, resolveNaptr, resolveNs, resolvePtr, resolveSoa, resolveSrv, resolveTlsa, resolveTxt, reverse, setDefaultResultOrder, setServers, 27 constants such as ADDRCONFIG
Tests: node-api node:dns: 17 pass, 3 fail, 0 error, 10 skipped. Failing: test-dns-get-server.js, test-dns-setserver-when-querying.js, test-dns.js.