Ember Fastboot处理POST请求失败 报getaddrinfo ENOTFOUND错误如何解决
Ember Fastboot 接口调用 ENOTFOUND 报错排查解决指南
核心报错本质:getaddrinfo ENOTFOUND test.news.bor.doi.test 代表运行Ember Fastboot的Node.js服务端环境,无法解析目标接口域名的DNS记录。浏览器、Postman可正常调用是因为二者运行在客户端环境,网络、DNS、hosts配置和服务端完全隔离,不代表服务端环境可达。
按以下优先级排查即可:
- 优先验证Fastboot部署环境的域名解析能力
登录Fastboot所在的运行环境(物理机/虚拟机/容器都要进对应环境内部操作),执行命令检测解析:
如果上述命令直接返回域名不存在,按以下场景修复:# 检测DNS解析 nslookup test.news.bor.doi.test # 连通性检测 curl -I "https://test.news.bor.doi.test/api/?format=json&type=footer&type=footer-menu".test为IANA保留的测试专用域名,默认没有公网解析记录,通常测试环境靠本地hosts绑定实现访问。检查运行环境的/etc/hosts文件,补充目标域名和对应服务IP的映射记录即可,格式为<接口服务实际IP> test.news.bor.doi.test- 如果是Docker/K8s容器部署,注意容器网络和宿主机隔离,宿主机配置的hosts不会同步到容器内,需要在容器启动参数中增加hosts映射,或配置容器侧的DNS规则
- 检查运行环境的
/etc/resolv.conf文件,确认配置了可用的DNS服务器,可临时替换为公共DNS(114.114.114.114、223.5.5.5)测试解析是否恢复
- 检查服务端出网代理配置
如果客户端访问测试域名需要走VPN、本地代理,Fastboot作为服务端进程默认不会继承客户端的代理配置:- 给Fastboot的Node运行进程配置
HTTP_PROXY、HTTPS_PROXY环境变量,指向可正常访问测试域名的代理节点 - 检查服务器防火墙、SELinux规则,确认没有限制Node进程的DNS查询、出网请求权限
- 给Fastboot的Node运行进程配置
- 校验Ember项目的Fastboot专属配置
排查项目中区分浏览器/Fastboot环境的配置项:- 检查API baseURL配置,确认Fastboot环境没有误配成不存在的内网域名、错误的测试地址
- 检查Fastboot请求代理、host白名单配置,确认测试域名没有被拦截、没有被错误重写到不可达地址
- 若服务端无法直接访问公网域名,可将Fastboot侧的API地址改成服务端可直连的内网IP/内网域名,无需和浏览器侧保持一致
快速验证技巧:每次修改配置后,可直接在Fastboot运行环境写一段极简的node-fetch请求脚本测试接口连通性,无需重启完整Fastboot服务,可大幅提升排查效率。
内容的提问来源于stack exchange,提问作者venki chowdary
相关产品推荐
相关产品推荐

