Cypress无法访问已启动的Angular本地服务器问题求助
我之前也踩过几乎一模一样的坑,给你梳理下可能的原因和解决办法:
首先得搞懂核心问题:你手动能通过localhost:4200访问,但127.0.0.1:4200不行,这说明你的Angular服务器只绑定了localhost这个主机名,而没有监听所有可用的网络接口。而Cypress在发起请求时,会把localhost解析成127.0.0.1去连接,这就导致了连接被拒绝的错误。
给你几个具体的解决步骤,按顺序试就行:
修改Angular启动命令,强制绑定到所有接口
把你启动Angular的命令改成这样:ng serve --proxy-config proxy.config.json --host 0.0.0.0
这个--host 0.0.0.0参数会让服务器监听所有可用的IP地址,包括localhost和127.0.0.1。启动后你可以先手动访问127.0.0.1:4200,能打开的话,Cypress再去访问就没问题了。确认Cypress的baseUrl配置完全匹配
检查你的Cypress配置文件(一般是cypress.config.js或者cypress.json),确保baseUrl设置的是http://localhost:4200,和你手动能访问的地址完全一致。虽然这步你可能已经做了,但再确认下没写错端口或者协议。排查本地安全软件的拦截
有时候本地防火墙、杀毒软件会莫名其妙拦截Cypress的网络请求,你可以临时关闭这些软件试试,要是能访问了,就给Cypress加个白名单权限。检查代理配置的影响
虽然你手动能访问,但还是可以扫一眼你的proxy.config.json,看看有没有设置请求来源的白名单限制,比如只允许特定IP的请求,不过这个概率比较小。
简单来说,最核心的解决办法就是给ng serve加上--host 0.0.0.0参数,让服务器监听所有IP,这样Cypress就能正常连接了。
内容来源于stack exchange

