同时起 web、admin、docs 三个 dev 服务,后两个报 EADDRINUSE address already in use :::3000,只能一个个手动改端口。日志里能对上时间点,这种反而好排。
各包的启动脚本都用了框架默认端口,没有从环境变量读。turbo 或 pnpm 并行启动时三个进程同时绑定同一个端口。这一点先确认清楚,后面就不用反复试。
lsof -i :3000 PORT=3001 pnpm --filter @acme/admin dev pnpm -r --parallel dev
「多包 dev 端口」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
处理上按这个顺序:每个包的 dev 脚本从 PORT 环境变量取端口 给不同默认值;根目录加一条 dev 脚本统一分配 3000 3001 3002;启动前用 lsof 检查端口占用;CI 里起服务也用随机端口 避免和本地冲突。
结果对不对很好判断,三个 dev 服务同时起来各占一个端口 控制台不再报 EADDRINUSE。
