如果 Replit 一发布就卡在健康检查,大多数时候不是平台随机抽风,而是你的应用根本没有按部署环境期望的方式对外提供服务。Replit 当前文档里跟这件事最相关的两层是:应用必须正确暴露 HTTP 端口,而且部署用的启动命令、.replit 配置和端口映射要对得上。
最常见的坑有三个。第一,程序只监听了 localhost,却没有把这个端口映射成可外部访问的 external port。第二,应用实际跑在 3000、5173 之类端口上,但 .replit 里没有正确配置 [[ports]]。第三,部署时执行的命令和你在工作区里手动运行的命令根本不是同一个。
这类问题之所以难受,是因为在工作区预览里它可能“看起来能跑”,但健康检查走的是发布后的标准入口。如果外部入口没连到你的应用,平台就只能判定服务不健康。
排查顺序建议这样走:
1. 先确认应用最终监听的是哪个本地端口。
2. 检查 .replit 里的 [[ports]] 是否把这个 localPort 映射到了 externalPort。
3. 如果程序只绑 localhost,确认是否启用了 exposeLocalhost = true,或者直接改为对外可访问的监听方式。
4. 再确认部署启动命令是不是和你本地调试时一致。
Replit 的文档也提醒,只有被正确暴露的 HTTP 端口,才能被 Webview 或外部请求访问。所以健康检查失败时,优先别看业务逻辑,先看“服务到底有没有真正暴露出来”。
一句话说,健康检查过不了,往往不是应用不会跑,而是平台找不到它。先把端口、监听地址和启动命令三件事对齐,很多部署问题就能直接消掉。