Nuxt服务端路由本地正常,部署到Vercel Edge服务器出现404的原因?
Nuxt3 部署 Vercel Edge 后 /api/chat 路由404问题
本地运行完全正常,但使用vercel-edge预设部署到Vercel后,发送聊天消息时服务器返回404错误:
错误信息:
{ "url": "/api/chat", "statusCode": 404, "statusMessage": "Cannot find any route matching /api/chat.", "message": "Cannot find any route matching /api/chat.", "stack": "" }
本地无任何异常,但远程服务器该问题持续存在。相关上下文代码如下:
package.json 脚本配置
"scripts": { "build": "NITRO_PRESET=vercel-edge nuxt build", "dev": "nuxt dev", "generate": "nuxt generate", "preview": "nuxt preview", "postinstall": "nuxt prepare" },
server/api/chat.post.js 代码
import { getChatStream } from '../utils/ai' export default defineEventHandler(async (event) => { try { const { messages } = await readBody(event) console.log(1, messages) const stream = await getChatStream({ messages }) return stream // return sendStream(event, stream) } catch (error) { console.error('error on server', error) } })
解决方法
确认请求方法匹配
路由文件命名为chat.post.js,仅响应POST请求。检查前端是否以POST方法调用/api/chat,若用GET请求会直接返回404。统一Nitro预设配置
在nuxt.config.ts中明确指定Edge预设,避免脚本和配置冲突:export default defineNuxtConfig({ nitro: { preset: 'vercel-edge' } })之后移除
package.json中build脚本的NITRO_PRESET=vercel-edge参数。强制重新部署清除缓存
登录Vercel控制台,找到对应项目手动触发重新部署,取消勾选"使用现有构建缓存",强制生成全新构建产物。修复流式响应处理
Vercel Edge环境对流式响应有特定要求,恢复代码中注释的sendStream调用:// return stream return sendStream(event, stream)检查文件路径与大小写
确认server/api/chat.post.js路径、文件名无拼写错误,注意Vercel部署环境区分大小写,本地Windows环境不区分,避免因大小写不一致导致路由无法识别。
内容的提问来源于stack exchange,提问作者redshift
相关产品推荐
相关产品推荐

