Next.js应用部署后页面不更新且刷新崩溃问题求助
Next.js App Router部署AWS Ubuntu后页面不更新、刷新崩溃问题排查
核心排查与修复方向
1. 清理部署缓存与残留进程
- 每次部署前强制删除项目根目录下的
.next文件夹,彻底清除旧构建缓存,避免新代码被旧缓存覆盖 - 终止所有残留的Next.js进程:执行
ps aux | grep next找到进程PID,用kill -9 [PID]彻底杀掉,再重新启动npm start,防止tmux会话中旧进程占用资源或加载过期内容
2. 修正Rewrite规则的App Router适配错误
你当前next.config.mjs中的rewrite规则目标路径指向了/pages/xxx,但App Router的路由结构基于app/目录,这种路径匹配错误是导致刷新崩溃的核心原因。修改后的规则示例:
// next.config.mjs const nextConfig = { async rewrites() { return [ { source: "/dashboard", destination: "/dashboard", // 对应app/dashboard/page.tsx }, { source: "/connectors", destination: "/connectors", }, { source: "/all-investigations", destination: "/all-investigations", }, { source: "/my-investigations", destination: "/all-investigations", }, // 动态路由需包含参数匹配,否则无参数访问会触发崩溃 { source: "/investigation-details/:id", destination: "/investigation-details/:id", }, { source: "/add-ai-coworker", destination: "/add-ai-coworker", }, { source: "/agent", destination: "/agent", }, { source: "/my-dashboard", destination: "/dashboard", }, { source: "/agent-details/:id", destination: "/agent-details/:id", }, { source: "/signup", destination: "/auth/signup", // 对应app/auth/signup/page.tsx }, { source: "/", destination: "/auth/signin", }, ]; }, }; export default nextConfig;
注意:动态路由必须在
source中声明参数(如:id),否则用户访问无参数的动态路由路径时,会因参数缺失触发页面崩溃。
3. 保障环境与依赖一致性
- 检查服务器Node.js版本与本地是否一致:执行
node -v,若版本差异较大,用nvm安装与本地相同的Node版本 - 服务器安装依赖时使用
npm ci替代npm install,确保依赖版本与本地package-lock.json完全匹配,避免兼容性问题 - 确认服务器环境变量配置完整:所有本地使用的
NEXT_PUBLIC_*开头的环境变量,需在服务器中正确设置,缺失环境变量可能导致页面渲染异常
4. 优化进程管理稳定性
tmux仅适合会话保持,长期管理应用建议改用pm2:
- 安装pm2:
npm install -g pm2 - 启动应用:
pm2 start npm --name "next-app" -- start - 查看崩溃日志:
pm2 logs next-app(快速定位崩溃原因) - 重启应用:
pm2 restart next-app
内容的提问来源于stack exchange,提问作者Ananya Bandyopadhyay
相关产品推荐
相关产品推荐

