换个角度想
环境变量像酒店房间的保险箱:贵重物品(密钥)不塞进行李箱(代码)拖着走,而是放进每个房间自带的保险箱——行李箱谁都可能翻到,保险箱只有住这间房的人能开。
术语 · 后端
Environment Variable
在代码之外保存运行配置和密钥,避免把敏感信息直接写进仓库。
代码之外的口袋
DB_URLprocess.env.DB_URL
API_KEYprocess.env.API_KEY
环境变量像酒店房间的保险箱:贵重物品(密钥)不塞进行李箱(代码)拖着走,而是放进每个房间自带的保险箱——行李箱谁都可能翻到,保险箱只有住这间房的人能开。
connect(process.env.DB_URL)
代码里只有名字,没有值
DB_URLtest_db
DB_URLlive_db
DB_URL → "test_db"
启动时,名字换成本地的值
DB_URL → "live_db"
启动时,名字换成线上的值
代码里只写名字
API Key、数据库密码——绝不进代码仓库。
同一份代码,本地、测试、线上各配各的值。
线上行为怪异?先查环境变量是不是漏配或配错了。
AI 生成的代码里直接写着 apiKey = "sk-abc…",还被推上了 GitHub。现在怎么办?
立刻去服务商后台吊销这把密钥、换新的——只从代码里删掉没用,推上去过就当已泄露。然后把新密钥放进环境变量,代码里只留 process.env.API_KEY。
前端代码里的「环境变量」构建后会打进产物、人人可见——真正的秘密只能放在服务端。名字带 PUBLIC 前缀的,才是设计给前端用的。