---
title: 环境变量和上下文
description: "Deno Deploy 早期访问版中管理环境变量和上下文的指南,包括变量类型、创建、编辑以及在代码中访问它们的方式。"
---
:::info
您正在查看 Deno DeployEA 的文档。正在寻找 Deploy Classic 的文档?[请点击这里查看](/deploy/)。
:::
Deno DeployEA 中的环境变量允许您使用静态值配置应用程序,例如 API 密钥或数据库连接字符串。
## 环境变量类型
环境变量可以以以下形式存储:
- **纯文本**:在 UI 中可见,适用于非敏感值,如特征标志
- **密钥**:创建后在 UI 中不可见,仅能从应用代码中读取,适用于敏感值,如 API 密钥
变量可以设置在:
- **应用级别**:特定于单个应用
- **组织级别**:应用于组织中的所有应用,但可以被应用级变量覆盖
## 上下文
每个环境变量适用于一个或多个上下文。上下文代表代码运行的逻辑“环境”,每个环境拥有自己的一组变量和密钥。
默认情况下,有两个上下文:
- **生产**:用于生产时间线,服务生产流量
- **开发**:用于开发时间线,服务非生产流量(预览 URL 和分支 URL)
:::info
需要额外的上下文?请联系 [支持](../support)。
:::
此外,还有一个用于构建过程中的 **构建** 上下文。构建上下文中的环境变量仅在构建期间可用,在生产和开发上下文中不可访问(反之亦然)。这种分离使得构建时和运行时可以有不同的配置。
在单个应用或者组织内,同一上下文中不能存在多个同名的环境变量;但可以在不同且不重叠的上下文中存在同名变量。
## 添加、编辑和删除环境变量
您可以从多个位置管理环境变量:
- 在创建应用时的 “新建应用” 页面
- 在应用设置的 “环境变量” 部分
- 在组织设置的 “环境变量” 部分
在每个位置,点击相应的编辑按钮打开环境变量抽屉。更改仅在点击 “保存” 后生效。点击 “取消” 会放弃更改。
添加变量步骤:
1. 点击 “添加环境变量”
2. 输入名称和值
3. 指定是否为密钥
4. 选择适用的上下文
您也可以从 `.env` 文件批量导入变量:
1. 点击 “+ 从 .env 文件添加”
2. 粘贴 `.env` 文件内容
3. 点击 “导入变量”
注意以 `#` 开头的行会被视为注释。
删除变量,点击其旁边的 “删除” 按钮。
编辑变量,点击其旁边的 “编辑” 按钮,可修改名称、值、密钥状态或适用上下文。
## 在代码中使用环境变量
通过 `Deno.env.get` API 访问环境变量:
```ts
const myEnvVar = Deno.env.get("MY_ENV_VAR");
```
## 限制
环境变量有以下限制:
- 环境变量键最大长度为 128 字节。
- 环境变量键不能以以下前缀开头:
- `DENO_`,但允许以下除外:`DENO_AUTH_TOKENS`、`DENO_COMPAT`、`DENO_CONDITIONS`、
`DENO_DEPLOY_ENDPOINT` 或 `DENO_DEPLOY_TOKEN`
- `LD_`
- `OTEL_`
- 环境变量值最大长度为 16 KB(16,384 字节)。
- 环境变量键不能为以下任一键。请改用
[云连接](/deploy/early-access/reference/cloud-connections)
- `AWS_ROLE_ARN`
- `AWS_WEB_IDENTITY_TOKEN_FILE`
- `GCP_WORKLOAD_PROVIDER_ID`
- `GCP_SERVICE_ACCOUNT_EMAIL`
- `GCP_PROJECT_ID`
- `AZURE_CLIENT_ID`
- `AZURE_TENANT_ID`
- `AZURE_FEDERATED_TOKEN_FILE`
## 预定义环境变量
Deno DeployEA 在所有上下文中提供以下预定义环境变量:
- `DENO_DEPLOY=1`:表示应用正在 Deno Deploy 环境中运行。
- `DENO_DEPLOYMENT_ID`:表示整个配置集(应用 ID、修订 ID、上下文和环境变量)的唯一标识符。当其中任何组件更改时此值也会变化。
- `DENO_DEPLOY_ORG_ID`:应用所属组织的 ID。
- `DENO_DEPLOY_ORG_SLUG`:应用所属组织的标识符。
- `DENO_DEPLOY_APP_ID`:应用的 ID。
- `DENO_DEPLOY_APP_SLUG`:应用的标识符。
- `DENO_DEPLOY_BUILD_ID`:当前运行的修订版本 ID。
- `DENO_TIMELINE`:应用当前运行的时间线。可能的值包括 `production`、`git-branch/` 和 `preview/`。构建期间不设置此变量,因为构建不针对特定时间线。
构建期间,环境变量中还会额外设置 `CI=1`。