刚跑起一个本地项目,浏览器打开 localhost 却提示「已拒绝连接」,ERR_CONNECTION_REFUSED。这个提示和「找不到网页」不是一回事:找不到网页是域名解析不到,拒绝连接说明地址解析成功了,是端口上没人应答。排查范围一下就缩小了。

第一件事:确认服务真的起来了

看运行命令的终端窗口,有没有输出「Listening on 3000」「Server running at」这类提示。没有就是启动失败,往上翻日志找报错,端口被占用、依赖没装、配置写错都在这里。终端报错退出了,浏览器当然连不上。

第二件事:端口对不对

浏览器地址栏的端口必须和服务监听的端口一致。前端项目常见 3000、5173、8080,后端常见 8000、8088。开了两个项目,别在 3000 上找 5173 的页面。

netstat -ano | findstr :3000

有输出说明端口在监听,没输出就是服务没起。拿到 PID 再用 tasklist 查是哪个进程占着。

第三件事:监听地址是不是 127.0.0.1

有些框架默认监听 127.0.0.1,只接受本机 IPv4 访问。而 localhost 在新系统上可能优先解析成 ::1(IPv6),于是走了 IPv6 却没人监听,就报拒绝连接。解决办法很直接:

http://127.0.0.1:3000

换成 127.0.0.1 试试,能打开就是这个原因。开发服务器启动时加 --host 0.0.0.0,让服务监听所有网卡,也能顺便解决手机连不上局域网的问题。

第四件事:协议和代理

  • http 还是 https:本地开发大多是 http,地址栏被自动补成 https 就会失败。
  • 代理软件:开了全局代理或者系统代理,localhost 的请求也可能被拦截,把 localhost 加进绕过列表。
  • 防火墙:本机访问一般不受影响,但用 IP 从其他设备访问时要放行端口。
  • 浏览器缓存:改动过 hosts 或者换过端口,Ctrl + F5 强刷一次。

按这个顺序走,九成情况三步内就能定位:服务没跑、端口错了、或者 IPv4 和 IPv6 对不上。