Astro Preview 后台进程运行中自动退出(ERR_CONNECTION_REFUSED)与重启验证
用 Start-Process 后台启动的 astro preview 服务在运行几分钟后进程退出,浏览器/curl 报 ERR_CONNECTION_REFUSED(服务此前正常)。解法:重启前先确认端口无监听(Get-NetTCPConnection),用 Start-Process 重新拉起并轮询 HTTP 200 就绪后再继续浏览器验证,避免误判为构建产物缺失。
- Astro
- Preview
- 进程退出
- 重启验证
现象
Start-Process cmd /c "npm run preview > preview.log 2>&1" 后台拉起 astro preview(HTTP 200 已验证),几分钟后再次访问 http://localhost:4321/projects 报 ERR_CONNECTION_REFUSED;Get-NetTCPConnection -State Listen 确认 4321 无监听,进程已退出。
误判风险
- 服务退出的瞬间,浏览器页面上看到的是”无法访问此网站 / localhost 拒绝了我们的连接请求”,容易误判为 build 产物缺失 / 路由 404 / 代码问题,从而浪费轮次排查 dist。
- 先查端口监听与 preview 日志(
preview*.log尾部),确认是服务进程没了而非内容问题。
解法
Get-NetTCPConnection -LocalPort 4321 -State Listen→ 无监听 = 服务已退出。- 重新
Start-Process -FilePath cmd.exe -ArgumentList '/c npm run preview > preview-ex.log 2>&1' -WindowStyle Hidden -PassThru记录 PID。 - 轮询就绪:循环
Invoke-WebRequest http://localhost:4321/ -TimeoutSec 4,直到 HTTP 200(约 2-10 秒)。 - 浏览器侧若停在 chrome-error 页,先
bu.navigate目标 URL 重试,必要时bu.resync()再导航。
备注
- 同一仓库已存在
pitfall-astro-preview-ipv6(端口迁移 + IPv6 监听),本坑聚焦”进程存活周期”与”重启验证”,两者是不同故障面。 - astro preview 是静态服务 dist,重建 dist 后无需重启 preview 即可读到新文件(先验证 200 再浏览器操作)。