Working with DNS Module
1. Resolving Domain Names (dns.lookup)
Example
import dns from "node:dns/promises";
const { address, family } = await dns.lookup("example.com");
| Behavior | Detail |
|---|---|
| Uses OS resolver | Honors /etc/hosts |
| Blocks libuv thread | Pool size = UV_THREADPOOL_SIZE |
2. Resolving with dns.resolve
| API | Returns |
|---|---|
dns.resolve4(host) | A records |
dns.resolve6(host) | AAAA records |
dns.resolveMx(host) | Mail exchange |
dns.resolveNs(host) | Name servers |
3. Resolving CNAME Records (dns.resolveCname)
| API | Returns |
|---|---|
dns.resolveCname(host) | Array of canonical names |
4. Resolving TXT Records (dns.resolveTxt)
| API | Returns |
|---|---|
dns.resolveTxt(host) | Array of string arrays |
| Use cases | SPF, DKIM, domain verification |
5. Resolving SRV Records (dns.resolveSrv)
| Field | Description |
|---|---|
priority | Lower = preferred |
weight | Selection weight |
port | Service port |
name | Target hostname |
6. Reverse DNS Lookup (dns.reverse)
| API | Returns |
|---|---|
dns.reverse(ip) | Array of hostnames |
7. Getting Name Servers (dns.getServers)
| API | Returns |
|---|---|
dns.getServers() | IP strings (with optional port) |
8. Setting Name Servers (dns.setServers)
9. Using Promises API (dns.promises)
| Import | Style |
|---|---|
import dns from "node:dns/promises" | Promise API |
new dns.Resolver() | Per-instance config (servers, TTL) |
10. Handling DNS Errors
| Code | Meaning |
|---|---|
ENOTFOUND | Domain doesn't resolve |
ESERVFAIL | DNS server failure |
ETIMEOUT | Lookup timed out |
NODATA | No record of requested type |