为什么NodeJS的"dns.resolve"参数是"localhost"就挂了?
Why "dns.resolve" of NodeJS hangs up when "localhost" is the parameter?
如果我使用dns.resolve()
不当我能理解,但是挂断是一种奇怪的行为。如果我做错了什么,不应该 dns.resolve()
抛出错误吗?
const dns = require("dns").promises;
dns.resolve("localhost").
then(
domains => {
console.log("===========");
console.log(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() 上正确 returns 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() returns 默认 127.0.0.1 和 8.8.8.8,试试看效果如何。
如果我使用dns.resolve()
不当我能理解,但是挂断是一种奇怪的行为。如果我做错了什么,不应该 dns.resolve()
抛出错误吗?
const dns = require("dns").promises;
dns.resolve("localhost").
then(
domains => {
console.log("===========");
console.log(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() 上正确 returns 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() returns 默认 127.0.0.1 和 8.8.8.8,试试看效果如何。