代码Bug修复和页面优化狂人,一天内生产环境中重新构建了32次,搞得Git推送的时候注释都不知道怎么写了。
总是碰到一些稀奇古怪的问题,不得不记录,后续得写一个自动构建重启的文件。
构建输出未更新: 直接修改了
/api/admin/upload/route.ts
源代码文件,但 Next.js 的生产构建 (npm run build
) 生成的.next/standalone
目录中的文件没有包含最新的修改。当用 PM2 启动时,它运行的是旧的构建输出。PM2 或 Node.js 环境的深层问题: 极低的可能性是 PM2 或服务器上的 Node.js 环境在加载或执行代码时存在某种异常,导致没有正确加载或运行更新后的文件。
编辑了错误的文件: 修改的文件路径可能与
.next/standalone
中实际执行的文件路径不完全对应。
为了彻底排除构建输出没有更新的问题,在服务器上执行一次完整的清理和重新构建,然后再用 PM2 启动。
执行以下步骤:
确保在项目根目录:
cd /var/www/ai.wildsalt.me
停止并删除当前的 PM2 进程:
pm2 stop my-blog-app pm2 delete my-blog-app
清理并执行完整的重新构建:
这将删除旧的构建输出,并生成全新的 .next 和 .next/standalone 目录。
sudo rm -rf .next npm run build
关注
npm run build
的输出,确保它完全成功,没有错误或警告(特别是关于Dynamic server usage
的,尽管之前决定先放一边,但它们有时会影响构建的完整性)。再次手动复制静态资源:
发现网站样式又没了,执行手动复制静态资源的步骤。
cp -r .next/static .next/standalone/.next/ cp -r public .next/standalone/
使用生态系统文件启动 PM2 进程:
pm2 start ecosystem.config.js --env production
查看 PM2 日志:
运行 pm2 logs <新的进程ID>。