Node.js HTTPS获取错误:getaddrinfo ENOTFOUND

4

我正在尝试从loopback获取一个filtered记录,但我不明白为什么nodejs在执行以下命令时会出错:

const https = require('https');
    var uid = '02644da038b37d7ba70b7ee1a92ba1d9';
        var URL = 'https://mobileapp.mydomain.com/api/uuids?filter[where][uuid]='+uid;
https.get(URL, (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);    
  res.on('data', (d) => {
    process.stdout.write(d);
  });

}).on('error', (e) => {
  console.error('ERROR:',e);
});

输出的错误:

ERROR: { Error: getaddrinfo ENOTFOUND mobileapp.mydomain.com mobileapp.mydomain.com:443
    at errnoException (dns.js:28:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:79:26)
  code: 'ENOTFOUND',
  errno: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'mobileapp.mydomain.com',
  host: 'mobileapp.mydomain.com',
  port: 443 }

它无法将主机名mobileapp.mydomain.com解析为IP地址。 - robertklep
我不知道为什么,但 nslookup 解析子域并显示静态 ipaddres - RSA
你是否使用某种防病毒或防火墙软件,可能会阻止Node进行DNS查找? - robertklep
没有任何防病毒软件或防火墙,这是基于Win 2008的VPS。 - RSA
3个回答

3

URL不应包含https://,修改url
var URL = 'https://mobileapp.mydomain.com/api/uuids?filter[where][uuid]='+uid;
var URL = 'mobileapp.mydomain.com/api/uuids?filter[where][uuid]='+uid;

我遇到了这个问题,这个方法解决了它。


它真的帮了我,错误已经消失了。 错误:{错误:getaddrinfo ENOTFOUND mobileapp.mydomain.com mobileapp.mydomain.com:443 在 errnoException (dns.js:28:10) 在 GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:79:26) 代码:'ENOTFOUND', errno:'ENOTFOUND', syscall:'getaddrinfo', 主机名:'mobileapp.mydomain.com', 主机:'mobileapp.mydomain.com', 端口:443 } - Imran Shaikh

3
显然,您使用的域名无效。

当我输入URL https://mobileapp.mydomain.com/api/uuids?filter[where][uuid]=02644da038b37d7ba70b7ee1a92ba1d9 时,结果是一个 json - RSA
1
看一下你的hosts文件,我觉得你把mobileapp.mydomain.com指向了一个特定的IP地址,这个地址在互联网上无法识别。 - A-yon Lee
我可以使用请求方法吗? - RSA
1
我尝试使用 ping mobileapp.mydomain.com,但无法识别,请查看您的 shell 输出是否包含 [127.0.0.1] - A-yon Lee
我有我的域名和子域名的静态IP地址。我之前使用的是Node 6.3.1,现在已经升级到8.5.0,看起来一切正常。 - RSA

1

可能是由于回环中的SSL身份验证,您可以尝试使用此npm包


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