Vercel 的四个运行环境各填什么变量

**Vercel 一个变量名可以在四个环境填不同值:Production(正式域名吃它)、Preview(PR / 非主分支的临时预览网址)、Development(本地 `vercel env pull` 默认拉的)、Pre-production(准生产 / staging,上线前演练)。**

各自该填什么

环境用途填值原则
Production正式线上(如 xxx.vercel.app)正式云数据库、正式 OAuth、NEXTAUTH_URL=https://正式域名
PreviewPR / 分支预览测试库、测试 OAuth —— 别连正式库,避免预览污染正式数据
Development本地开发本机用,不等于线上
Pre-production准生产 / staging接近正式配置,但仍建议单独库

配套事实

  • vercel env pull apps/web/.env.local 默认拉 Development。
  • 环境变量挂在 Vercel 项目 上,不挂在本地文件夹上 —— 所以 vercel link / env add 在项目根目录做即可,不必进子目录。
  • 排查「线上注册失败」先看 Production 的 DATABASE_URL,因为测的是正式站点。
  • Neon / Redis 都只是一条 URL(DATABASE_URL / REDIS_URL),不像 Google 是 client id + secret。

Preview 内部还有三种作用域

同一个变量在 Preview 里可以只给一部分部署:

作用域生效范围特点
当前分支 Preview只注入该分支产生的 Preview最安全;它是永久保存的,只是范围窄 —— 其他 PR、Production 都不吃它
全部 Preview以后所有 PR 的 Preview 自动拥有最省事,适合私人项目
Production只给正式环境不该长期把正式 key 借给 Preview

所以「只绑定当前 PR 分支」不等于「只能用一次」:该分支后续重新部署、PR 更新代码都继续生效,除非手动删除。

配套建议:模型名与有限额的 Preview key 配「全部 Preview」,但不要长期复用 Production 的 key。 Neon 的逻辑不同 —— 仓库永久保存 NEON_PROJECT_ID / NEON_API_KEY,每个 PR 自动建一个临时数据库分支,PR 关闭后删除。理想组合是「永久 Preview AI 配置 + 每个 PR 独立临时数据库」。

相关