📜  Node.js dnsPromises.lookup() 方法(1)

📅  最后修改于: 2023-12-03 15:03:12.617000             🧑  作者: Mango

Node.js dnsPromises.lookup() 方法

Node.js dnsPromises.lookup() 方法是一个异步方法,用于执行 DNS 查询并返回结果。它是使用Promise的版本,返回一个解析后的对象。

语法
dnsPromises.lookup(hostname[, options])
  • hostname: 字符串,表示要解析的主机名。
  • options: 可选对象,可包含以下属性:
    • family:整数,指定解析的 IP 地址族(4 或 6)。默认值是 0。
    • hints:整数,指定 IP 地址类型的提示。可选值有 dns.ADDRCONFIGdns.V4MAPPEDdns.V4MAPPEDONLY
    • all:布尔型,设置为true时,返回一个对象数组,包含所有解析出的 IP 地址。默认值为false。
返回值

dnsPromises.lookup() 方法通过 Promise 返回一个解析后的对象。当 Promise 回调成功时,resolve方法传递一个包含以下属性的对象:

  • address:字符串,表示解析出的 IP 地址。
  • family:整数,表示解析出的 IP 地址族(4 或 6)。
示例

以下示例演示了如何使用 dnsPromises.lookup() 方法解析域名google.com的IP地址:

const dnsPromises = require('dns').promises;

dnsPromises.lookup('google.com')
  .then((result) => {
    console.log(result.address); // 172.217.10.78
    console.log(result.family); // 4
  })
  .catch((err) => {
    console.log(err);
  });

在上面的示例中,我们首先使用 require() 函数加载 dnsPromises 模块,然后调用其 lookup() 方法,将要解析的域名作为第一个参数传递。当 Promise 回调成功时,我们使用解析后的对象的 address 和 family 属性输出结果。

注意事项
  • 如果指定了 options.all 属性,则返回的是一个对象数组,其中每个对象表示一个解析出的 IP 地址。例如:
{ address: '2607:f8b0:4004:803::200e', family: 6 }
{ address: '172.217.10.78', family: 4 }
  • 如果指定的域名不能被解析,则 Promise 回调会reject一个错误对象。
  • 如果指定的主机名是一个无效的字符串,则 Promise 回调会reject一个错误对象。
  • 如果解析域名时发生了超时,则 Promise 回调会reject一个错误对象。
  • 如果指定了options.family 属性,则 DNS 查询会限制解析出的 IP 地址族。如果指定为4,则只会查询 IPv4 地址;如果指定为6,则只会查询 IPv6 地址。