You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress运行报错getaddrinfo ENOTFOUND无法加载目标网站如何解决?

可能的原因

  • Cypress运行所在的Node.js环境的DNS配置和手动访问用的浏览器DNS配置不一致。比如浏览器配置了专属代理、VPN或者自定义DNS,而Node.js默认使用系统层面的DNS规则,不会复用浏览器的网络配置。
  • 本地hosts文件配置存在权限差异。如果你近期修改过hosts文件添加了站点的解析规则,但是Cypress是用其他用户或者管理员/root权限启动的,会读取不到对应hosts配置。
  • Cypress代理配置失效。如果之前配置过Cypress自定义代理,近期代理服务下线或者规则变更,会导致Cypress的网络请求无法正常解析域名。
  • 版本升级带来的兼容问题。若你近期升级过Node.js或者Cypress版本,部分新版本的DNS解析逻辑和旧版本存在差异,可能触发解析异常。
  • 安全软件拦截。部分防火墙、杀毒软件会对不同应用的网络请求做差异化限制,允许浏览器访问的同时拦截Cypress发起的请求。

排查步骤

  1. 首先在启动Cypress的同个终端下执行DNS解析验证
    运行nslookup mywebsite.com或者ping mywebsite.com,如果无法解析到正确IP,说明是终端环境的DNS配置问题,和Cypress本身无关。
  2. 检查Cypress代理配置
    查看项目中的Cypress配置文件(cypress.config.js或旧版的cypress.json)是否配置了proxy、noProxy字段,同时检查终端环境变量中的HTTP_PROXY、HTTPS_PROXY、NO_PROXY是否存在异常配置。
  3. 强制配置Cypress hosts规则
    可以直接在Cypress配置中添加域名和IP的映射,绕过系统DNS解析,示例配置:
    const { defineConfig } = require('cypress')
    
    module.exports = defineConfig({
      hosts: {
        'mywebsite.com': '站点对应的实际公网/内网IP'
      }
    })
    
    配置完成后重新运行用例验证是否恢复。
  4. 验证启动权限差异
    如果你之前用管理员/root权限启动Cypress,切换为普通用户启动测试,反之也可以尝试,确认不同权限下hosts文件读取是否正常。
  5. 版本回退验证
    如果你近期升级过Node.js或者Cypress版本,回退到之前用例正常运行的对应版本,排查是否是版本兼容问题。
  6. 安全软件验证
    临时关闭本地防火墙、杀毒软件等安全工具,再运行Cypress用例,确认是否是安全工具拦截导致的问题。

内容的提问来源于stack exchange,提问作者Rnj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:48:04