22.14-多环境配置

要点

  • 多环境配置解决「开发、测试、生产用不同配置」的问题
  • Workers 用 wrangler.jsonc 的 env 字段定义命名环境
  • Vercel 用环境变量分 Production / Preview / Development
  • 核心原则:环境隔离,数据不互通

内容

1. 为什么需要多环境

一个典型的问题:你在本地开发时连的是本地数据库,但部署到生产后,代码要连生产数据库。如果代码里硬编码了数据库连接字符串,就会出问题。

多环境配置解决的就是这个问题:

// 代码里不关心当前是什么环境
const db = connect(process.env.DATABASE_URL)
 
// 不同环境自动使用不同的 DATABASE_URL
// local:     postgresql://localhost:5432/mydb_dev
// staging:   postgresql://staging-db:5432/mydb_staging
// production: postgresql://prod-db:5432/mydb_prod

2. Workers 的多环境

wrangler.jsonc 的 env 字段定义命名环境:

// wrangler.jsonc
{
  "name": "api",
  "main": "src/index.ts",
 
  // 默认环境(local)
  "d1_databases": [
    {
      "binding": "DB",
      "database_name": "ai-agent-local-auth",
      "database_id": "91e63d07-..."
    }
  ],
  "vars": {
    "APP_ENV": "development",
    "WEB_ORIGIN": "http://localhost:3005"
  },
 
  // 命名环境
  "env": {
    "staging": {
      "d1_databases": [
        {
          "binding": "DB",
          "database_name": "ai-agent-staging-auth",
          "database_id": "staging-uuid-...",
          "remote": true
        }
      ],
      "vars": {
        "APP_ENV": "staging",
        "WEB_ORIGIN": "https://staging.aistudy8.com"
      }
    },
    "production": {
      "d1_databases": [
        {
          "binding": "DB",
          "database_name": "ai-agent-production-auth",
          "database_id": "a01ab065-..."
        }
      ],
      "vars": {
        "APP_ENV": "production",
        "WEB_ORIGIN": "https://aistudy8.com"
      }
    }
  }
}

3. 切换环境

// terminal
# 默认环境(local)
npx wrangler dev
 
# staging 环境
npx wrangler dev --env staging
 
# production 环境(本地模拟,一般不用)
npx wrangler dev --env production
 
# 部署到 staging
npx wrangler deploy --env staging
 
# 部署到 production
npx wrangler deploy --env production

4. Vercel 的多环境

Vercel 的环境变量分三档:

环境说明
Production生产环境(main 分支)
Preview预览环境(PR 部署)
Development本地开发(vercel dev

在 Dashboard 设置环境变量时,可以选择生效的环境。

5. 环境隔离的原则

  1. 数据隔离:不同环境用不同的数据库
  2. 配置隔离:不同环境用不同的环境变量
  3. 部署隔离:不同环境独立部署,互不影响

6. 典型的环境划分

环境用途触发方式
local本地开发wrangler dev
dev / staging联调、测试push 到 develop
production生产push 到 main

7. 小结

多环境配置的核心:

  1. Workerswrangler.jsoncenv 字段
  2. Vercel 用环境变量分 Production / Preview / Development
  3. 环境隔离:数据、配置、部署都要隔离
  4. 典型划分:local → staging → production