Laravel+Inertia SSR修改默认端口无效,报EADDRINUSE错误
解决Laravel Inertia SSR端口冲突问题
配置层面的排查与修复
- 检查环境变量覆盖:Laravel的
.env文件优先级高于config/inertia.php,先查看staging站点的.env是否存在INERTIA_SSR_PORT变量,若有则改为13715。修改后必须重新构建SSR资源,因为构建产物会固化环境变量值:npm run build - 确认构建产物已更新:修改配置后未重新构建的话,
public/build/server/ssr.mjs仍会使用旧端口。执行上述构建命令后,再尝试启动PM2进程。 - 清理PM2残留进程:可能之前的staging SSR进程未彻底关闭,导致端口被占用。先列出所有PM2进程:
若存在pm2 listssr_staging_example进程,先删除再重启:pm2 delete ssr_staging_example pm2 start /var/www/staging.example.com/public/build/server/ssr.mjs --name ssr_staging_example --watch
其他快速解决方法
- 启动时强制指定端口:如果配置修改无效,可在PM2启动命令中直接传递端口参数,强制覆盖配置:
这里的pm2 start /var/www/staging.example.com/public/build/server/ssr.mjs --name ssr_staging_example --watch -- --port=13715--用于区分PM2参数和Node进程参数,--port=13715会直接传递给SSR服务。 - 排查端口占用源:用以下命令确认13714端口被哪个进程占用:
若为无关进程,可直接终止;若为旧的SSR进程,按前文方法清理PM2进程即可。lsof -i :13714 # 或替代命令 netstat -tulpn | grep 13714
内容的提问来源于stack exchange,提问作者Enes Palit
相关产品推荐
相关产品推荐

