node请求java接口的api地址报错error:getaddrinfo ENOTFOUND

1、问题

node服务器用如下代码请求java接口,项目中本地hostname是localhost所以不会报错,但是部署到正式环境后报错error:getaddrinfo ENOTFOUND www.xxxx.com  www.xxxx.com:8080

var opt = {//请求属性
        hostname: 'http://www.xxxx.com',
        port: '8080',
        method: 'POST',
        path: path,
        headers: {
            "Content-Type": 'application/json;charset=utf-8',
        }
    }
 

2、解决

因为hostname只填写实际的主机名,把hostname中的http://或https://去掉(path中在填写具体路径),就可以正常请求了。

另外,path路径也不要错了,否则会返回404,在项目中遇到过由于更新版本java那边把接口路径改了,node这边不知道,然后请求返回的数据一直404路径错误!

还有一种情况会导致这个报错:

在新的服务器上部署node以后,使用pm2 作为进程管理工具,安装完成以后,pm2 无论执行 pm2 list 还是pm2 的其它命令,全部报Error: getaddrinfo ENOTFOUND的错误。

仔细检查安装都没问题,上git pm2的issue搜索发现,居然是hosts的原因导致的。

默认centos的 hosts 会把本地 127.0.0.1 localhost 注释掉,去掉再试下就可以了。

参见git pm2 issue:

https://github.com/Unitech/pm2/issues/324 

原解答:
My fault! My deployment scripts were accidentally deleting the localhost from the /etc/hosts file, making it impossible to nodejs find the local machine.
 

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"getaddrinfo enoent" 是一个常见的错误信息,通常出现在使用 Vue.js 进行网络请求时。这个错误表示网络请求的目标服务器无法被解析,并且无法找到对应的 IP 地址。 通常,这个错误是由于以下几种情况引起的: 1. DNS 解析错误:这可能是由于网络故障、DNS 服务器错误或本地网络配置问题导致的。可以尝试使用其他网络或刷新 DNS 缓存来解决此问题。 2. 服务器故障:如果请求的服务器出现故障或关闭,也会导致此错误。可以尝试与服务器管理员或开发人员联系以了解问题的具体原因。 3. URL 错误:请确保你的请求地址正确,并且可以在浏览器中正常访问。有时候可能只是因为拼写错误或其他细微问题。 解决这个问题的方法有以下几种: 1. 检查网络连接:确保你的网络连接正常,并且可以正常访问其他网站。 2. 检查 DNS 设置:检查你的计算机或路由器的 DNS 设置,确保正确配置了可靠的 DNS 服务器。 3. 检查请求地址:确保你的请求地址正确,并且可以在浏览器中正常访问。 4. 尝试使用 IP 地址:如果无法通过域名访问服务器,可以尝试使用服务器的 IP 地址进行访问。 5. 检查服务器状态:如果其他网站可以正常访问,但目标服务器无法访问,可能是服务器故障或关闭。请与服务器管理员或开发人员联系寻求帮助。 总之,"getaddrinfo enoent" 错误通常是由于无法解析目标服务器导致的。通过检查网络连接、DNS 设置和请求地址,可以解决大多数问题。如果问题仍然存在,建议与服务器管理员或开发人员联系以寻求进一步的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值