Nuxt3部署Vercel后现有页面直接访问出现404问题求助
问题排查方案:Nuxt3 + Vercel 直接访问路由返回404
核心问题定位
路由内跳转正常但直接访问/爬虫访问返回404,本质是Vercel服务器上没有对应路由的可访问资源——要么是静态预渲染没生成对应HTML文件,要么是SSR模式下路由配置未生效。
具体排查步骤
1. 清理冲突的配置项
你的nuxt.config.ts里同时存在多套路由生成配置,且有矛盾设置:
- 移除
generate配置块:Nuxt3已弃用generate,统一用nitro.prerender替代 - 删除
nitro.static: true:该配置会强制生成纯静态SPA站点,和你设置的ssr: true(服务端渲染/预渲染)冲突,直接导致预渲染逻辑异常 - 保留
nitro.prerender和routeRules的正确配置,修改后相关配置块如下:
routeRules: { "/**": { prerender: true }, }, ssr: true, nitro: { prerender: { routes: [ "/", "/about", "/blog" ], crawlLinks: true, concurrency: 12, }, },
2. 本地验证预渲染结果
执行npx nuxi generate命令,查看项目根目录下的.output/public文件夹:
- 如果存在
about/index.html文件,说明预渲染成功,问题出在Vercel部署环节 - 如果没有该文件,说明预渲染过程失败,需检查/about页面组件:
- 排查页面内
useFetch/useAsyncData等异步逻辑,确保预渲染时能正常获取数据(可查看nuxi generate控制台的错误提示) - 检查组件是否存在语法错误或运行时错误,导致预渲染中断
- 排查页面内
3. 确认Vercel部署配置
- 构建命令必须为
npx nuxi generate(SSG模式)或npx nuxi build(SSR模式),避免使用未正确配置的旧脚本如npm run generate - SSR模式下,Vercel会自动识别Nuxt3项目,无需额外配置;SSG模式下,只要预渲染生成了对应HTML文件,部署后Vercel会自动托管静态资源,不会返回404
4. 检查页面路由配置
确保/pages目录下存在about.vue文件,或通过app/router.options.ts自定义的路由规则正确映射了/about路径,避免路由定义错误导致的资源缺失
内容的提问来源于stack exchange,提问作者Sathya Molagoda
相关产品推荐
相关产品推荐

