Vercel 的四个运行环境各填什么变量
各自该填什么
| 环境 | 用途 | 填值原则 |
|---|---|---|
| Production | 正式线上(如 xxx.vercel.app) | 正式云数据库、正式 OAuth、NEXTAUTH_URL=https://正式域名 |
| Preview | PR / 分支预览 | 测试库、测试 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 独立临时数据库」。
相关
- 改环境变量要触发云端重建而非重新上传
- 一次性凭证拿到就落盘