You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)
  }
})

解决方法

  1. 确认请求方法匹配
    路由文件命名为chat.post.js,仅响应POST请求。检查前端是否以POST方法调用/api/chat,若用GET请求会直接返回404。

  2. 统一Nitro预设配置
    在nuxt.config.ts中明确指定Edge预设,避免脚本和配置冲突:

    export default defineNuxtConfig({
      nitro: {
        preset: 'vercel-edge'
      }
    })
    

    之后移除package.json中build脚本的NITRO_PRESET=vercel-edge参数。

  3. 强制重新部署清除缓存
    登录Vercel控制台,找到对应项目手动触发重新部署,取消勾选"使用现有构建缓存",强制生成全新构建产物。

  4. 修复流式响应处理
    Vercel Edge环境对流式响应有特定要求,恢复代码中注释的sendStream调用:

    // return stream
    return sendStream(event, stream)
    
  5. 检查文件路径与大小写
    确认server/api/chat.post.js路径、文件名无拼写错误,注意Vercel部署环境区分大小写,本地Windows环境不区分,避免因大小写不一致导致路由无法识别。

内容的提问来源于stack exchange,提问作者redshift

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:43:15