这是本项目真实踩过的坑:代码没错、构建也成功,只是 app.baseURL 和「产物挂在哪个 URL 前缀下」不一致。
改下面两个输入,右边三块结论实时跟着变。
| 核对项 | 正确值(示例:部署在 /nuxt/) | 怎么验 |
|---|---|---|
app.baseURL 与子目录一致 | app: { baseURL: '/nuxt/' } | 看 index.html 里 src 是不是 /nuxt/_nuxt/…;F12 Network 第一条不能是 404 |
assets.publicPath / app.cdnURL | 只有资源单独放 CDN 时才写:assets: { publicPath: 'https://cdn.example.com/nuxt/' } | 只改 baseURL 但资源在 CDN 上,路径就会拼错 |
| 生成命令 | 纯静态用 npx nuxt generate;npx nuxt build 出的是要跑 Node 的 .output/server/index.mjs | 静态托管却用 build,等于上传了一堆用不上的东西 |
| 产物目录 | .output/public | nginx 的 root/alias 要指到这一层(或其上一级),别指进 _nuxt |
404.html 存在 | 静态托管的兜底页 | 访问乱写的路径应回你的 404 页,而不是 nginx 默认页 |
sitemap 的 site.url | site: { url: 'https://example.com/nuxt/' }:真实域名 + 真实前缀 | 生成的 sitemap.xml 里每条链接都要能点开 |
| history 路由刷新 | 由 baseURL 带上 router base + try_files 或预渲染 | 手动刷新 /nuxt/articles/a 不能 404 |