排查前端部署后线上未更新的问题
· 阅读需 4 分钟
TL;DR
前端代码已推送到 Git,但线上看不到新功能?根因通常是服务器构建产物未更新。通过对比本地和服务器的 dist/ 目录时间戳即可确认,解决方案是在服务器上重新运行 npm run build。
问题现象
新开发的按钮/功能在本地 (npm run dev) 正常显示,但部署后线上看不到:
- 浏览器刷新无效
- 清除浏览器缓存无效
- 检查代码逻辑没问题
- Git 确认代码已推送
根因
前端静态文件通常由 Nginx 直接服务,流程如下:
Git Push → 服务器 git pull → 服务器 npm run build → Nginx 服务 dist/
问题出在第二步到第三步之间:代码已 git pull,但 npm run build 未执行或执行失败。
典型场景:
- 自动部署脚本只同步代码,未触发构建
- 手动部署时忘记运行构建命令
- 构建命令执行了但输出到错误目录
解决方案
步骤 1:对比构建产物时间戳
# 本地
ls -la dist/assets/ | head -5
# 服务器
ssh user@server "ls -la /path/to/project/dist/assets/ | head -5"
输出对比:
# 本地(最新构建)
Mar 7 22:55 index-28dFGXhX.js ← 包含新功能
# 服务器(旧构建)
Mar 7 20:18 index-DsFdnylh.js ← 不包含新功能
文件名不同(hash 变化)说明内容有变化,时间戳不同说明构建未同步。
步骤 2:在服务器上重新构建
ssh user@server "cd /path/to/project && npm run build"