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

如何实现任意目录下Apollo GraphQL/Express部署到Vercel

Vercel自定义Apollo GraphQL服务入口路径配置方法

Vercel 默认仅将根目录下 api/ 文件夹内的文件识别为可执行的 Serverless Function,其他路径下的 JS 文件会被默认判定为静态资源,直接返回原始源码,这是移动入口文件后代码不执行的根本原因。

可通过以下两种方案实现自定义入口路径:

方案1:直接修改Vercel函数识别规则

在项目根目录的 vercel.json 中新增 functions 配置,指定自定义路径下的文件为服务端函数,同时对应调整重写规则即可,示例配置如下(假设你的入口文件存放在 src/server/index.js):

{
  "functions": {
    "src/server/*.js": {
      "runtime": "@vercel/node@3"
    }
  },
  "rewrites": [
    {
      "source": "/(.*)",
      "destination": "/src/server/index"
    }
  ]
}

配置注意事项:

  • functions 字段支持glob路径匹配,所有匹配到的文件都会被识别为可执行的服务端函数,替换成你自己的实际存放路径即可
  • 重写规则的destination路径不需要加.js后缀,Vercel会自动匹配对应函数
  • 必须显式指定运行时为@vercel/node,避免文件被识别为静态资源

方案2:通过api目录做轻量转发

如果不想修改Vercel默认的函数扫描规则,可以保留默认的api/index.js文件,仅在该文件内转发引入你存放在自定义路径的实际服务代码,示例:

// api/index.js
export { default } from '../src/your-custom-path/apollo-entry.js'

这种方式不需要调整vercel.json的functions配置,原有重写规则可以保持不变,适合不想改动Vercel默认配置的场景。

常见踩坑点

  • 仅修改重写规则不配置functions字段无效:重写仅做请求路径转发,不会改变Vercel对文件类型的判定逻辑
  • Apollo Server 4+ 版本不要在部署入口使用startStandaloneServer方法,该方法仅适用于本地开发,部署到Vercel需要导出符合Node运行时要求的请求处理函数
  • 配置修改后需要重新触发全量部署,本地可通过vercel dev命令提前验证路径识别是否正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:45:38