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

如何配置vercel.json使/api/items等API路由在Vercel部署的后端应用中正常工作?

如何配置vercel.json使/api/items等API路由在Vercel部署的后端应用中正常工作?

别着急,我帮你梳理了问题核心——你的vercel.json里缺少路由重写规则,导致Vercel不知道该把/api/开头的请求转发给你的Express应用处理,所以只有根路径/能正常响应。

下面是具体的修复方案:

1. 更新vercel.json配置

在现有配置中添加routes字段,让所有/api/*和根路径的请求都指向你的index.js:

{
  "version": 2,
  "builds": [
    {
      "src": "./index.js",
      "use": "@vercel/node"
    }
  ],
  "routes": [
    {
      "src": "/api/(.*)",
      "dest": "/index.js"
    },
    {
      "src": "/(.*)",
      "dest": "/index.js"
    }
  ],
  "headers": [
    {
      "source": "/api/(.*)",
      "headers": [
        {
          "key": "Access-Control-Allow-Origin",
          "value": "https://to-my-frontend"
        },
        {
          "key": "Access-Control-Allow-Methods",
          "value": "GET, POST, PUT, DELETE, OPTIONS"
        },
        {
          "key": "Access-Control-Allow-Headers",
          "value": "Content-Type, Authorization"
        }
      ]
    }
  ]
}

这个routes配置的作用是告诉Vercel:所有匹配/api/xxx的请求,以及其他所有请求,都交给index.js里的Express应用处理,这样你的路由规则才能被正确解析。

2. 确认index.js的配置合理性

你的index.js写法完全没问题:

  • 已经通过app.use('/api', userRoutes)和app.use('/api', itemRoutes)正确挂载了API路由
  • 用module.exports = app导出应用的方式符合@vercel/node的要求,Vercel会自动处理端口监听,不需要手动写app.listen()
  • CORS中间件的配置也没问题,和vercel.json里的header规则不冲突(其实保留其中一种配置就够用,你可以根据需求调整)

3. 重新部署应用

把修改后的vercel.json提交到仓库,触发Vercel重新部署,之后应该就能正常访问/api/items这类路由了。

如果还有问题,可以查看Vercel部署日志里的报错信息(比如依赖安装失败、路由解析错误等),这些能帮你进一步定位问题。

备注:内容来源于stack exchange,提问作者Murchoid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 09:49:48