AWS Lightsail环境下pm2重启/重载无法同步新代码变更
以下是针对该问题的排查和解决步骤:
验证构建是否成功生成新文件
先检查npm run build的输出日志,确认没有报错(比如依赖安装失败、代码语法错误)。然后查看构建产物目录(通常是dist或build)的文件修改时间,或者直接打开某个变更过的前端文件,确认内容已经更新。如果构建失败,先修复构建错误再重试。确认PM2进程的指向路径
执行pm2 show <进程ID>,查看进程的工作目录(cwd字段)和启动命令,确认是否正确指向了最新的构建产物目录。如果PM2的配置文件(如ecosystem.config.js)里的路径配置错误,即使重启进程也会加载旧文件。必要时修改配置后执行pm2 reload <进程ID> --update-env。清除浏览器/CDN缓存
前端静态资源很可能被浏览器缓存,尝试用Ctrl+Shift+R(Windows/Linux)或Cmd+Shift+R(Mac)强制刷新页面。如果你的应用配置了Lightsail CDN,需要登录Lightsail控制台手动清除CDN缓存,确保边缘节点拉取最新资源。检查反向代理服务的配置与缓存
如果用了Nginx或Apache作为反向代理,先确认代理配置中的根路径是否指向最新的构建目录。另外,代理服务可能开启了静态文件缓存,执行sudo systemctl restart nginx(Nginx)或sudo systemctl restart apache2(Apache)重启服务,或者清除代理的缓存目录。确认Git拉取的分支与代码
执行git branch确认当前处于生产分支(如main/master),再用git log查看最新提交记录,确认你推送的代码已经成功拉取到服务器。如果拉取的是错误分支,切换到正确分支后重新构建。排查文件权限问题
检查构建产物目录的文件权限,确保PM2进程或反向代理服务有读取权限。执行ls -l <构建目录>查看权限,若权限不足,用chmod -R 755 <构建目录>调整权限后重启相关服务。
内容的提问来源于stack exchange,提问作者pink_friday

