Next.js 部署翻车实录:rm -rf .next 的血泪教训

归类 · 历练 约 1 分钟读完

现象

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

顺手记两条相关的

  1. Ant Design 项目统一用组件,别拿原生标签绕过——样式优先级打架的时候,全局 ant 覆盖规则会教做人
  2. 要覆盖全局样式的,把自定义规则放 globals.css 末尾,利用加载顺序取胜

坑不分新旧,翻过才算学会。共勉 🙃

# Next.js# 前端# 运维