Next.js 部署翻车实录:rm -rf .next 的血泪教训
现象
npm run build 成功、npm start 正常,但线上页面白屏,控制台报:
Uncaught SyntaxError: Unexpected token '<' (chunk-xxx.js)
请求 JS 文件返回的是 HTML——典型的新 HTML 引用了不存在的旧 chunk。
原因
部署脚本只删了 .next/cache 和 .next/server,没删整个 .next。Next.js 的预渲染 HTML 里带着旧的 chunk hash,增量构建没有完全覆盖,新旧文件名对不上,白屏。
正确姿势
rm -rf .next && npm run build
没错,就这么朴实无华。要么写个部署脚本老老实实全量清理:
#!/bin/bash
set -e
npm ci
rm -rf .next .next.bak
npm run build
pm2 reload your-app
顺手记两条相关的
- Ant Design 项目统一用组件,别拿原生标签绕过——样式优先级打架的时候,全局
ant覆盖规则会教做人 - 要覆盖全局样式的,把自定义规则放
globals.css末尾,利用加载顺序取胜
坑不分新旧,翻过才算学会。共勉 🙃