Я могу понять, если неправильно использую dns.resolve()
, но вешать трубку — это странное поведение. Не должен ли dns.resolve()
выдавать ошибку, если я что-то делаю не так?
const dns = require("dns").promises;
dns.resolve("localhost").
then(
domains => {
console.info("========== = ");
console.info(domains);
}
).
catch((error) => { console.error(error); });
Моя версия Node.js — 16.13.0.
Я думаю, это объясняется здесь: https://nodejs.org/api/dns.html#dnsresolve-dnsresolve-and-dnsreverse
dns.resolve(), dns.resolve*() and dns.reverse() They do not use the same set of configuration files than what dns.lookup() uses. For instance, they do not use the configuration from /etc/hosts.
В моей MacOS dns.resolve() правильно возвращает 127.0.0.1, когда я использую DNS-сервер по умолчанию, когда я использую 8.8.8.8, он выдает эту ошибку, но не зависает:
Error: queryA ENOTFOUND localhost
at QueryReqWrap.onresolve [as oncomplete] (internal/dns/promises.js:172:17) {
errno: undefined,
code: 'ENOTFOUND',
syscall: 'queryA',
hostname: 'localhost'
}
Итак, я предполагаю, что проблема вызвана конфигурацией вашей системы, эта проблема GitHub содержит дополнительную информацию: https://github.com/nodejs/help/issues/2163
Использование dns.lookup() правильно возвращает 127.0.0.1 по умолчанию и 8.8.8.8, попробуйте и посмотрите, как это работает.