环境变量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全大写加下划线是惯例,代码里按这个名字读
2值Value等号后面是实际配置值;包含密钥时,截图前要遮盖
3注释Comment# 开头,给人看的备注,程序会忽略
常见变体 · Variants
本地 .env.env
.env
本地开发使用,通常应由 .gitignore 排除
平台环境变量Platform Env
Vercel → Settings → Env
部署平台设置页里再配一份
示例模板.env.example
.env.example
告诉别人要配啥,不写真值
典型使用场景
.env 文件长这样
代码里只写变量名
.gitignore 拦截提交
Vercel 环境变量设置页