Nuxt4 SSR项目部署Vercel时Serverless Functions失效,仅加载前端
解决Nuxt4部署Vercel后API路由无响应的问题
以下是针对问题的排查和解决步骤:
1. 确认Nitro预设配置正确性
确保nuxt.config.ts中明确指定Vercel serverless预设,避免默认fallback行为:
export default defineNuxtConfig({ ssr: true, nitro: { preset: 'vercel', vercel: { functionType: 'serverless' // 强制生成独立Serverless函数,而非fallback } } })
注意不要同时配置其他预设(如node-server),这会导致Nitro生成错误的输出结构。
2. 修正Vercel平台构建配置
- 构建命令:必须设置为
nuxt build --preset vercel,普通nuxt build会默认使用node-server预设,无法生成Vercel Serverless函数。 - 输出目录:留空或设为
.output,Nuxt4的Vercel预设会自动处理.vercel/output目录,无需手动指定。 - 根目录:确保指向项目根目录,不要设置为子目录,否则Vercel无法识别Nitro生成的函数配置文件。
3. 检查Server API路由规范
- 确保
server/api下的文件符合Nuxt路由规则:比如server/api/user.ts对应/api/user,避免使用特殊命名(如下划线开头的文件仅用于中间件)。 - 每个API路由必须正确导出
defineEventHandler:
export default defineEventHandler((event) => { return { data: 'API响应内容' } })
- 不要在
server目录下放非API/中间件的文件,防止Nitro解析路由时出错。
4. 统一Node版本
Vercel默认Node版本可能与本地v24不一致,导致函数生成异常:
- 在
package.json中添加引擎声明:
"engines": { "node": "24.x" }
- 在Vercel控制台的项目设置 -> General -> Node.js版本选择24.x,确保环境一致。
5. 清理缓存重新构建
- 本地删除
.nuxt、.output、.vercel目录,重新执行nuxt build --preset vercel后推送代码。 - 在Vercel构建页面点击Redeploy,并选择Clear build cache,强制重新生成函数文件。
关键说明
Nuxt4完全支持Vercel Serverless部署,无需使用专用Node服务器。出现单个__fallback.func的原因通常是Nitro未识别到需要单独打包的API路由,或预设配置错误导致所有请求 fallback到前端静态资源。
内容的提问来源于stack exchange,提问作者ravesandstorm
相关产品推荐
相关产品推荐

