dns/promises
API dns.promises предоставляет альтернативный набор асинхронных методов DNS, которые возвращают объекты Promise вместо использования функций обратного вызова. API доступен через import { promises as dnsPromises } from 'node:dns' или import dnsPromises from 'node:dns/promises'.
Использование в Deno
import * as mod from "node:dns/promises";
класс Resolver
Использование в Deno
import { Resolver } from "node:dns/promises";
Независимый резолвер для DNS-запросов.
При создании нового резолвера используются настройки сервера по умолчанию. Настройка серверов, используемых резолвером, с помощью resolver.setServers() не влияет на другие резолверы:
import { promises } from 'node:dns';
const resolver = new promises.Resolver();
resolver.setServers(['4.4.4.4']);
// This request will use the server at 4.4.4.4, independent of global settings.
resolver.resolve4('example.org').then((addresses) => {
// ...
});
// Alternatively, the same code can be written using async-await style.
(async function() {
const addresses = await resolver.resolve4('example.org');
})();
Доступны следующие методы из API dnsPromises:
resolver.getServers()resolver.resolve()resolver.resolve4()resolver.resolve6()resolver.resolveAny()resolver.resolveCaa()resolver.resolveCname()resolver.resolveMx()resolver.resolveNaptr()resolver.resolveNs()resolver.resolvePtr()resolver.resolveSoa()resolver.resolveSrv()resolver.resolveTxt()resolver.reverse()resolver.setServers()
Конструкторы
Resolver(options?: ResolverOptions) Свойства
Методы
cancel(): void Отменяет все ожидающие DNS-запросы, отправленные этим резолвером. Соответствующие обратные вызовы будут вызваны с ошибкой с кодом ECANCELLED.
setLocalAddress(
ipv4?: string,
ipv6?: string,
): void Экземпляр резолвера будет отправлять запросы с указанного IP-адреса. Это позволяет программам задавать исходящие интерфейсы при использовании в системах с несколькими сетевыми интерфейсами.
Если адрес v4 или v6 не указан, используется значение по умолчанию, и операционная система автоматически выберет локальный адрес.
При отправке запросов DNS-серверам IPv4 резолвер будет использовать локальный адрес v4, а при отправке запросов DNS-серверам IPv6 — локальный адрес v6. rrtype запросов разрешения имён не влияет на используемый локальный адрес.
функция getDefaultResultOrder
Использование в Deno
import { getDefaultResultOrder } from "node:dns/promises";
getDefaultResultOrder(): "ipv4first" | "verbatim"Возвращает значение по умолчанию для verbatim в lookup и dnsPromises.lookup(). Значение может быть одним из следующих:
-
ipv4first: дляverbatimзначение по умолчанию —false. -
verbatim: дляverbatimзначение по умолчанию —true.
Тип возвращаемого значения
"ipv4first" | "verbatim" функция getServers
Использование в Deno
import { getServers } from "node:dns/promises";
getServers(): string[]Возвращает массив строк с IP-адресами, отформатированных согласно RFC 5952, которые в данный момент настроены для разрешения DNS-имён. Если используется нестандартный порт, строка будет содержать номер порта.
[
'4.4.4.4',
'2001:4860:4860::8888',
'4.4.4.4:1053',
'[2001:4860:4860::8888]:1053',
]
Тип возвращаемого значения
string[] функция lookup
Использование в Deno
import { lookup } from "node:dns/promises";
Перегрузка 1
lookup(
hostname: string,
family: number,
): Promise<LookupAddress>Разрешает имя узла (например, 'nodejs.org') в первую найденную запись A (IPv4) или AAAA (IPv6). Все свойства option являются необязательными. Если options — целое число, оно должно быть 4 или 6; если options не задано, возвращаются найденные адреса IPv4 и IPv6.
Если для параметра all задано значение true, Promise разрешается, а addresses представляет собой массив объектов со свойствами address и family.
В случае ошибки Promise отклоняется с объектом Error, где err.code — код ошибки. Обратите внимание, что значение err.code будет установлено в 'ENOTFOUND' не только если имя узла не существует, но и при других сбоях поиска, например при отсутствии доступных файловых дескрипторов.
dnsPromises.lookup() не обязательно имеет какое-либо отношение к протоколу DNS. Реализация использует средства операционной системы, которые могут связывать имена с адресами и наоборот. Эта реализация может иметь тонкие, но важные последствия для поведения любой программы Node.js. Перед использованием dnsPromises.lookup() ознакомьтесь с разделом Особенности реализации.
Пример использования:
import dns from 'node:dns';
const dnsPromises = dns.promises;
const options = {
family: 6,
hints: dns.ADDRCONFIG | dns.V4MAPPED,
};
dnsPromises.lookup('example.com', options).then((result) => {
console.log('address: %j family: IPv%s', result.address, result.family);
// address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6
});
// When options.all is true, the result will be an Array.
options.all = true;
dnsPromises.lookup('example.com', options).then((result) => {
console.log('addresses: %j', result);
// addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}]
});
Параметры
hostname: string family: number Тип возвращаемого значения
Promise<LookupAddress> Перегрузка 2
lookup(
hostname: string,
options: LookupOneOptions,
): Promise<LookupAddress>Параметры
hostname: string options: LookupOneOptions Тип возвращаемого значения
Promise<LookupAddress> Перегрузка 3
lookup(
hostname: string,
options: LookupAllOptions,
): Promise<LookupAddress[]>Параметры
hostname: string options: LookupAllOptions Тип возвращаемого значения
Promise<LookupAddress[]> Перегрузка 4
lookup(
hostname: string,
options: LookupOptions,
): Promise<LookupAddress | LookupAddress[]>Параметры
hostname: string options: LookupOptions Тип возвращаемого значения
Promise<LookupAddress | LookupAddress[]> Перегрузка 5
lookup(hostname: string): Promise<LookupAddress>Параметры
hostname: string Тип возвращаемого значения
Promise<LookupAddress> функция lookupService
Использование в Deno
import { lookupService } from "node:dns/promises";
lookupService(
address: string,
port: number,
): Promise<{ hostname: string; service: string; }>Определяет имя узла и службу по указанным address и port с помощью базовой реализации getnameinfo операционной системы.
Если address не является допустимым IP-адресом, будет выброшена ошибка TypeError. Значение port будет преобразовано в число. Если оно не является допустимым номером порта, будет выброшена ошибка TypeError.
В случае ошибки Promise отклоняется с объектом Error, где err.code — код ошибки.
import dnsPromises from 'node:dns';
dnsPromises.lookupService('127.0.0.1', 22).then((result) => {
console.log(result.hostname, result.service);
// Prints: localhost ssh
});
Параметры
address: string port: number Тип возвращаемого значения
Promise<{ hostname: string; service: string; }> функция resolve
Использование в Deno
import { resolve } from "node:dns/promises";
Перегрузка 1
resolve(hostname: string): Promise<string[]>Использует протокол DNS для преобразования имени узла (например, 'nodejs.org') в массив записей ресурсов. В случае успеха Promise разрешается в массив записей ресурсов. Тип и структура отдельных результатов зависят от rrtype:
В случае ошибки Promise отклоняется с объектом Error, где err.code — один из кодов ошибок DNS.
Параметры
hostname: string Имя узла для разрешения.
Тип возвращаемого значения
Promise<string[]> Перегрузка 2
resolve(
hostname: string,
rrtype: "A",
): Promise<string[]>Параметры
hostname: string rrtype: "A" Тип возвращаемого значения
Promise<string[]> Перегрузка 3
resolve(
hostname: string,
rrtype: "AAAA",
): Promise<string[]>Параметры
hostname: string rrtype: "AAAA" Тип возвращаемого значения
Promise<string[]> Перегрузка 4
resolve(
hostname: string,
rrtype: "ANY",
): Promise<AnyRecord[]>Параметры
hostname: string rrtype: "ANY" Тип возвращаемого значения
Promise<AnyRecord[]> Перегрузка 5
resolve(
hostname: string,
rrtype: "CAA",
): Promise<CaaRecord[]>Параметры
hostname: string rrtype: "CAA" Тип возвращаемого значения
Promise<CaaRecord[]> Перегрузка 6
resolve(
hostname: string,
rrtype: "CNAME",
): Promise<string[]>Параметры
hostname: string rrtype: "CNAME" Тип возвращаемого значения
Promise<string[]> Перегрузка 7
resolve(
hostname: string,
rrtype: "MX",
): Promise<MxRecord[]>Параметры
hostname: string rrtype: "MX" Тип возвращаемого значения
Promise<MxRecord[]> Перегрузка 8
resolve(
hostname: string,
rrtype: "NAPTR",
): Promise<NaptrRecord[]>Параметры
hostname: string rrtype: "NAPTR" Тип возвращаемого значения
Promise<NaptrRecord[]> Перегрузка 9
resolve(
hostname: string,
rrtype: "NS",
): Promise<string[]>Параметры
hostname: string rrtype: "NS" Тип возвращаемого значения
Promise<string[]> Перегрузка 10
resolve(
hostname: string,
rrtype: "PTR",
): Promise<string[]>Параметры
hostname: string rrtype: "PTR" Тип возвращаемого значения
Promise<string[]> Перегрузка 11
resolve(
hostname: string,
rrtype: "SOA",
): Promise<SoaRecord>Параметры
hostname: string rrtype: "SOA" Тип возвращаемого значения
Promise<SoaRecord> Перегрузка 12
resolve(
hostname: string,
rrtype: "SRV",
): Promise<SrvRecord[]>Параметры
hostname: string rrtype: "SRV" Тип возвращаемого значения
Promise<SrvRecord[]> Перегрузка 13
resolve(
hostname: string,
rrtype: "TXT",
): Promise<string[][]>Параметры
hostname: string rrtype: "TXT" Тип возвращаемого значения
Promise<string[][]> Перегрузка 14
resolve(
hostname: string,
rrtype: string,
): Promise<>Параметры
hostname: string rrtype: string Тип возвращаемого значения
Promise<> функция resolve4
Использование в Deno
import { resolve4 } from "node:dns/promises";
Перегрузка 1
resolve4(hostname: string): Promise<string[]>Использует протокол DNS для разрешения IPv4-адресов (записей A) для hostname. В случае успеха Promise разрешается в массив IPv4-адресов (например, ['74.125.79.104', '74.125.79.105', '74.125.79.106']).
Параметры
hostname: string Имя хоста для разрешения.
Тип возвращаемого значения
Promise<string[]> Перегрузка 2
resolve4(
hostname: string,
options: ResolveWithTtlOptions,
): Promise<RecordWithTtl[]>Параметры
hostname: string options: ResolveWithTtlOptions Тип возвращаемого значения
Promise<RecordWithTtl[]> Перегрузка 3
resolve4(
hostname: string,
options: ResolveOptions,
): Promise<string[] | RecordWithTtl[]>Параметры
hostname: string options: ResolveOptions Тип возвращаемого значения
Promise<string[] | RecordWithTtl[]> функция resolve6
Использование в Deno
import { resolve6 } from "node:dns/promises";
Перегрузка 1
resolve6(hostname: string): Promise<string[]>Использует протокол DNS для разрешения IPv6-адресов (записей AAAA) для hostname. В случае успеха Promise разрешается в массив IPv6-адресов.
Параметры
hostname: string Имя хоста для разрешения.
Тип возвращаемого значения
Promise<string[]> Перегрузка 2
resolve6(
hostname: string,
options: ResolveWithTtlOptions,
): Promise<RecordWithTtl[]>Параметры
hostname: string options: ResolveWithTtlOptions Тип возвращаемого значения
Promise<RecordWithTtl[]> Перегрузка 3
resolve6(
hostname: string,
options: ResolveOptions,
): Promise<string[] | RecordWithTtl[]>Параметры
hostname: string options: ResolveOptions Тип возвращаемого значения
Promise<string[] | RecordWithTtl[]> функция resolveAny
Использование в Deno
import { resolveAny } from "node:dns/promises";
resolveAny(hostname: string): Promise<AnyRecord[]>Использует протокол DNS для разрешения всех записей (также называемых ANY или запросом *). В случае успеха Promise разрешается в массив с различными типами записей. У каждого объекта есть свойство type, указывающее тип текущей записи. В зависимости от type объект также будет содержать дополнительные свойства:
Пример объекта результата:
[ { type: 'A', address: '127.0.0.1', ttl: 299 },
{ type: 'CNAME', value: 'example.com' },
{ type: 'MX', exchange: 'alt4.aspmx.l.example.com', priority: 50 },
{ type: 'NS', value: 'ns1.example.com' },
{ type: 'TXT', entries: [ 'v=spf1 include:_spf.example.com ~all' ] },
{ type: 'SOA',
nsname: 'ns1.example.com',
hostmaster: 'admin.example.com',
serial: 156696742,
refresh: 900,
retry: 900,
expire: 1800,
minttl: 60 } ]
Параметры
hostname: string Тип возвращаемого значения
Promise<AnyRecord[]> функция resolveCaa
Использование в Deno
import { resolveCaa } from "node:dns/promises";
resolveCaa(hostname: string): Promise<CaaRecord[]>Использует протокол DNS для разрешения записей CAA для hostname. В случае успеха Promise разрешается в массив объектов с доступными записями авторизации центра сертификации для hostname (например, [{critical: 0, iodef: 'mailto:pki@example.com'},{critical: 128, issue: 'pki.example.com'}]).
Параметры
hostname: string Тип возвращаемого значения
Promise<CaaRecord[]> функция resolveCname
Использование в Deno
import { resolveCname } from "node:dns/promises";
resolveCname(hostname: string): Promise<string[]>Использует протокол DNS для разрешения записей CNAME для hostname. В случае успеха Promise разрешается в массив записей канонических имён, доступных для hostname (например, ['bar.example.com']).
Параметры
hostname: string Тип возвращаемого значения
Promise<string[]> функция resolveMx
Использование в Deno
import { resolveMx } from "node:dns/promises";
resolveMx(hostname: string): Promise<MxRecord[]>Использует протокол DNS для разрешения записей обмена почтой (записей MX) для hostname. В случае успеха Promise разрешается в массив объектов, содержащих свойства priority и exchange (например, [{priority: 10, exchange: 'mx.example.com'}, ...]).
Параметры
hostname: string Тип возвращаемого значения
Promise<MxRecord[]> функция resolveNaptr
Использование в Deno
import { resolveNaptr } from "node:dns/promises";
resolveNaptr(hostname: string): Promise<NaptrRecord[]>Использует протокол DNS для разрешения записей на основе регулярных выражений (записей NAPTR) для hostname. В случае успеха Promise разрешается в массив объектов со следующими свойствами:
flagsserviceregexpreplacementorderpreference
{
flags: 's',
service: 'SIP+D2U',
regexp: '',
replacement: '_sip._udp.example.com',
order: 30,
preference: 100
}
Параметры
hostname: string Тип возвращаемого значения
Promise<NaptrRecord[]> функция resolveNs
Использование в Deno
import { resolveNs } from "node:dns/promises";
resolveNs(hostname: string): Promise<string[]>Использует протокол DNS для разрешения записей серверов имён (записей NS) для hostname. В случае успеха Promise разрешается в массив записей серверов имён, доступных для hostname (например, ['ns1.example.com', 'ns2.example.com']).
Параметры
hostname: string Тип возвращаемого значения
Promise<string[]> функция resolvePtr
Использование в Deno
import { resolvePtr } from "node:dns/promises";
resolvePtr(hostname: string): Promise<string[]>Использует протокол DNS для разрешения записей указателей (записей PTR) для hostname. В случае успеха Promise разрешается в массив строк, содержащих записи ответа.
Параметры
hostname: string Тип возвращаемого значения
Promise<string[]> функция resolveSoa
Использование в Deno
import { resolveSoa } from "node:dns/promises";
resolveSoa(hostname: string): Promise<SoaRecord>Использует протокол DNS для разрешения записи начала зоны ответственности (записи SOA) для hostname. В случае успеха Promise разрешается в объект со следующими свойствами:
nsnamehostmasterserialrefreshretryexpireminttl
{
nsname: 'ns.example.com',
hostmaster: 'root.example.com',
serial: 2013101809,
refresh: 10000,
retry: 2400,
expire: 604800,
minttl: 3600
}
Параметры
hostname: string Тип возвращаемого значения
Promise<SoaRecord> функция resolveSrv
Использование в Deno
import { resolveSrv } from "node:dns/promises";
resolveSrv(hostname: string): Promise<SrvRecord[]>Использует протокол DNS для разрешения записей служб (записей SRV) для hostname. В случае успеха Promise разрешается в массив объектов со следующими свойствами:
priorityweightportname
{
priority: 10,
weight: 5,
port: 21223,
name: 'service.example.com'
}
Параметры
hostname: string Тип возвращаемого значения
Promise<SrvRecord[]> функция resolveTxt
Использование в Deno
import { resolveTxt } from "node:dns/promises";
resolveTxt(hostname: string): Promise<string[][]>Использует протокол DNS для разрешения текстовых запросов (записей TXT) для hostname. В случае успеха Promise разрешается в двумерный массив текстовых записей, доступных для hostname (например, [ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]). Каждый вложенный массив содержит фрагменты TXT одной записи. В зависимости от сценария использования их можно объединить или обрабатывать отдельно.
Параметры
hostname: string Тип возвращаемого значения
Promise<string[][]> функция reverse
Использование в Deno
import { reverse } from "node:dns/promises";
reverse(ip: string): Promise<string[]>Выполняет обратный DNS-запрос, который преобразует IPv4- или IPv6-адрес в массив имён хостов.
В случае ошибки Promise отклоняется с объектом Error, где err.code — один из кодов ошибок DNS.
Параметры
ip: string Тип возвращаемого значения
Promise<string[]> функция setDefaultResultOrder
Использование в Deno
import { setDefaultResultOrder } from "node:dns/promises";
setDefaultResultOrder(order:
"ipv4first"
| "ipv6first"
| "verbatim"
): voidЗадаёт значение по умолчанию для order в dns.lookup() и [lookup](/api/node/dns/promises/. Возможны следующие значения:
-
ipv4first: задаёт значениеorderпо умолчанию какipv4first. -
ipv6first: задаёт значениеorderпо умолчанию какipv6first. -
verbatim: задаёт значениеorderпо умолчанию какverbatim.
Значение по умолчанию — verbatim; dnsPromises.setDefaultResultOrder() имеет более высокий приоритет, чем --dns-result-order. При использовании потоков Worker вызов dnsPromises.setDefaultResultOrder() из основного потока не влияет на порядок DNS по умолчанию в рабочих потоках.
Параметры
order:
"ipv4first"
| "ipv6first"
| "verbatim"
должно иметь значение 'ipv4first', 'ipv6first' или 'verbatim'.
Тип возвращаемого значения
void функция setServers
Использование в Deno
import { setServers } from "node:dns/promises";
setServers(servers: readonly string[]): voidЗадаёт IP-адреса и порты серверов, которые будут использоваться при выполнении разрешения DNS-имён. Аргумент servers — это массив адресов в формате RFC 5952. Если используется порт DNS по умолчанию, установленный IANA (53), его можно не указывать.
dnsPromises.setServers([
'4.4.4.4',
'[2001:4860:4860::8888]',
'4.4.4.4:1053',
'[2001:4860:4860::8888]:1053',
]);
Если указан недопустимый адрес, будет выброшена ошибка.
Метод dnsPromises.setServers() нельзя вызывать во время выполнения DNS-запроса.
Этот метод работает примерно так же, как resolve.conf. То есть, если попытка разрешения с использованием первого указанного сервера приводит к ошибке NOTFOUND, метод resolve() не будет пытаться выполнить разрешение с использованием следующих указанных серверов. Резервные DNS-серверы будут использоваться, только если предыдущие серверы не ответят вовремя или возникнет какая-либо другая ошибка.
Параметры
servers: readonly string[] массив адресов в формате RFC 5952
Тип возвращаемого значения
void переменная ADDRGETNETWORKPARAMS
Использование в Deno
import { ADDRGETNETWORKPARAMS } from "node:dns/promises";
Тип
"EADDRGETNETWORKPARAMS" переменная BADFAMILY
Использование в Deno
import { BADFAMILY } from "node:dns/promises";
Тип
"EBADFAMILY" переменная BADFLAGS
Использование в Deno
import { BADFLAGS } from "node:dns/promises";
Тип
"EBADFLAGS" переменная BADHINTS
Использование в Deno
import { BADHINTS } from "node:dns/promises";
Тип
"EBADHINTS" переменная BADQUERY
Использование в Deno
import { BADQUERY } from "node:dns/promises";
Тип
"EBADQUERY" переменная CANCELLED
Использование в Deno
import { CANCELLED } from "node:dns/promises";
Тип
"ECANCELLED" переменная CONNREFUSED
Использование в Deno
import { CONNREFUSED } from "node:dns/promises";
Тип
"ECONNREFUSED" переменная DESTRUCTION
Использование в Deno
import { DESTRUCTION } from "node:dns/promises";
Тип
"EDESTRUCTION" переменная LOADIPHLPAPI
Использование в Deno
import { LOADIPHLPAPI } from "node:dns/promises";
Тип
"ELOADIPHLPAPI" переменная NOTFOUND
Использование в Deno
import { NOTFOUND } from "node:dns/promises";
Тип
"ENOTFOUND" переменная NOTINITIALIZED
Использование в Deno
import { NOTINITIALIZED } from "node:dns/promises";
Тип
"ENOTINITIALIZED" переменная SERVFAIL
Использование в Deno
import { SERVFAIL } from "node:dns/promises";
Тип
"ESERVFAIL"
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/dns/promises