Astro Preview 端口被占自动迁移 + IPv6 监听导致 127.0.0.1 连不上
astro preview 指定端口被占时自动迁移到新端口(4321→4322),且默认只监听 ::1(IPv6);用 curl 127.0.0.1(IPv4)会"无法连接",实际服务是好的。解法:看 preview 日志找真实端口,用 localhost(IPv6)访问。
- Astro
- Preview
- 端口
- IPv6
现象
astro preview --port 4321 启动后 curl http://127.0.0.1:4321/... 报”无法连接到远程服务器”,误判服务未起来。
排查
看 preview.log 发现:
Port 4321 is in use, trying another one...
astro v7.3.1 ready in 16 ms
Local http://localhost:4322/再看 Get-NetTCPConnection -State Listen:
::1 4321 21640 ← 早先的 dev 进程(IPv6)
::1 4322 22952 ← 本次 preview(IPv6)两个关键事实:
- 端口被占会自动迁移,最终端口以日志输出为准,不是启动参数
- 默认只监听 ::1(IPv6),IPv4 的 127.0.0.1 上根本没有监听,所以连不上
修复
- 用
localhost访问(解析到 ::1):Invoke-WebRequest http://localhost:4322/...→ HTTP 200 - 或确认实际监听地址后再选 URL;不要只看启动参数里的端口
注意
- 验证本地 Astro 服务时:①先查 preview.log 的真实端口 ②curl 用 localhost 而非 127.0.0.1
- 排查”服务没起来”先用
Get-NetTCPConnection -State Listen看实际监听(地址+端口+进程),再下结论