切换·Esc 返回

环境变量Env Var

上线与排错
把密钥、网址等配置放在代码外,按环境分别设置

环境变量常保存接口地址、运行模式和服务端密钥。本地 .env 文件不会自动加密,前端公开变量也会进入浏览器代码;真正的密钥要放在服务端,并避免提交到 Git。

.env · 本地开发配置 OPENAI_API_KEY=sk-proj-•••••• DATABASE_URL=postgres://••••
process.env.OPENAI_API_KEY 🛡 .gitignore 规则已匹配;提交前再看 git status

什么时候用

  • 在本地 .env 中保存服务端配置,代码只读取变量名
    .env
    OPENAI_API_KEY=sk-••••••
    DATABASE_URL=postgres://••••
    本地配置一行一个;敏感值不要提交、截图或转发
  • 按照所用框架的方式在服务端读取环境变量
    const key = process.env.OPENAI_API_KEY代码里只有变量名,换 Key 不改代码
  • 忽略文件 .gitignore排除本地配置,并在提交前再次检查
    .gitignore
    node_modules
    .env
    匹配规则的未跟踪文件会被跳过;已跟踪文件要另行处理
  • 本地和线上各一套部署上线 Deployment 平台的设置页里再配一份
    💻 本地 .env☁️ 平台设置页

什么时候不用

  • 把密钥直接写进代码并提交:仓库访问者可能看到并使用这把密钥
    const key = "sk-proj-8fk2…"Key 写死在代码里还提交,全网可见
  • .env 发给别人:发文件、发截图、发群聊都算泄露
    .env→ 转发给同事 / 截图发群
    离开电脑的那一刻就算泄露
  • Key 写进浏览器能看到的页面代码:右键查看源代码就泄露
    右键 → 查看网页源代码<script> key="sk-…" </script>写进页面代码,谁都能翻出来
  • 改了 .env 不重启服务:程序读的还是旧值,排查半天
    改了 .env,直接刷新页面…401 Unauthorized(还是旧 Key)
组成结构 · Anatomy
OPENAI_API_KEY=sk-proj-••••••  # 本地开发用,别提交
1变量名Key全大写加下划线是惯例,代码里按这个名字读
2Value等号后面是实际配置值;包含密钥时,截图前要遮盖
3注释Comment# 开头,给人看的备注,程序会忽略
常见变体 · Variants
本地 .env.env
.env
本地开发使用,通常应由 .gitignore 排除
平台环境变量Platform Env
Vercel → Settings → Env
部署平台设置页里再配一份
示例模板.env.example
.env.example
告诉别人要配啥,不写真值
典型使用场景
.env 文件长这样
.env🔒 不提交
# 本地开发用
OPENAI_API_KEY=sk-proj-8fk2••••••
DATABASE_URL=postgres://localhost:5432
代码里只写变量名
api.js
const key = process.env.OPENAI_API_KEY;
const res = await askAI(prompt, key);
代码里只有变量名,换 Key 只改 .env,不动代码
.gitignore 拦截提交
.gitignore
node_modules
dist
.env
🛡 匹配规则的未跟踪文件会被 git add 跳过;提交前仍要看 git status
Vercel 环境变量设置页
Environment Variables
KEY
VALUE
环境
OPENAI_API_KEY
••••••••
Production
DATABASE_URL
••••••••
Production