Node.js DNS错误:getaddrinfo ENOTFOUND

6

当我在Linux上使用命令进行测试时,出现如下错误,请帮我修复一下吗?

sudo node -pe 'require("dns").lookup("http://www.amazon.com",function(){console.dir(arguments)})'

(注意:本文保留了HTML标签)

GetAddrInfoReqWrap {
  callback: [Function],
  family: 0,
  hostname: 'http://www.amazon.com',
  oncomplete: [Function: onlookup] }
{ '0': 
   { Error: getaddrinfo ENOTFOUND http://www.amazon.com
    at errnoException (dns.js:55:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:97:26)
     code: 'ENOTFOUND',
     errno: 'ENOTFOUND',
     syscall: 'getaddrinfo',
     hostname: 'http://www.amazon.com' } }

一些系统信息: node -v v9.2.0

uname -a Linux 10-101-169-37 4.0.0-040000-generic #201504121935 SMP Sun Apr 12 23:36:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux


你尝试过使用 https 而不是 http 吗?也许出现错误是因为没有在 http 上找到亚马逊,但他们会重定向到 https。 - Grynets
1个回答

4

只需要去掉协议。当您想解析DNS记录时,不需要协议。

DNS协议无论是httphttpsftp、'smtp`等都没有关系,只需要一个A记录来解析。

不要使用http://www.amazon.com,而是使用www.amazon.com

这样应该就可以了。

sudo node -pe 'require("dns").lookup("www.amazon.com",function(){console.dir(arguments)})'

2
没问题,DNS协议不关心是httphttpsftpsmtp等,只需要A记录。 - Stamos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接