后端
环境变量Environment Variable
你可能会问
环境变量到底是什么?为什么密钥不能直接写进代码里?
简单来说
在代码之外保存运行配置和密钥,避免把敏感信息直接写进仓库。
代码里只有名字
DB_URLprocess.env.DB_URL
API_KEYprocess.env.API_KEY
本地 · .env 文件线上 · 平台设置换环境换值,代码一行不动
01 · 先这样理解
把抽象概念放进真实场景
在代码之外保存运行配置和密钥,避免把敏感信息直接写进仓库。
换个角度想环境变量像酒店房间的保险箱:贵重物品(密钥)不塞进行李箱(代码)拖着走,而是放进每个房间自带的保险箱——行李箱谁都可能翻到,保险箱只有住这间房的人能开。
02 · 点击演示
一份代码,怎么在两个环境各连各的库?
突出显示的部分,就是当前概念在整条流程中负责的位置。
connect(process.env.DB_URL)
代码里只有名字,没有值
- .env 文件(不进仓库)
DB_URLtest_db平台的环境变量设置DB_URLlive_db DB_URL → "test_db"
启动时,名字换成本地的值
DB_URL → "live_db"
启动时,名字换成线上的值
- 🧪连上了测试库随便折腾,坏了也不心疼🚀连上了正式库同一份代码,一行没改
1 / 4
Name · 代码里只写名字
03 · 放进真实任务
什么时候会遇到它
保管密钥
API Key、数据库密码——绝不进代码仓库。
区分环境
同一份代码,本地、测试、线上各配各的值。
排查配置
线上行为怪异?先查环境变量是不是漏配或配错了。
04 · 想一想
用一个问题检查理解
AI 生成的代码里直接写着 apiKey = "sk-abc…",还被推上了 GitHub。现在怎么办?
查看答案
立刻去服务商后台吊销这把密钥、换新的——只从代码里删掉没用,推上去过就当已泄露。然后把新密钥放进环境变量,代码里只留 process.env.API_KEY。
最容易踩的坑
前端代码里的「环境变量」构建后会打进产物、人人可见——真正的秘密只能放在服务端。名字带 PUBLIC 前缀的,才是设计给前端用的。