术语 · 后端

环境变量

Environment Variable

在代码之外保存运行配置和密钥,避免把敏感信息直接写进仓库。

代码之外的口袋

代码里只有名字

DB_URLprocess.env.DB_URL

API_KEYprocess.env.API_KEY

值不在代码里
换环境换值,代码一行不动
代码里只写变量名,真实的值在每个环境里各自保管。

换个角度想

环境变量像酒店房间的保险箱:贵重物品(密钥)不塞进行李箱(代码)拖着走,而是放进每个房间自带的保险箱——行李箱谁都可能翻到,保险箱只有住这间房的人能开。

一份代码,怎么在两个环境各连各的库?

  1. connect(process.env.DB_URL)

    代码里只有名字,没有值

  2. .env 文件(不进仓库)

    DB_URLtest_db

    平台的环境变量设置

    DB_URLlive_db

  3. DB_URL → "test_db"

    启动时,名字换成本地的值

    DB_URL → "live_db"

    启动时,名字换成线上的值

  4. 测试环境连上了测试库随便折腾,坏了也不心疼
    正式环境连上了正式库同一份代码,一行没改

代码里只写名字

什么时候会遇到它

  1. 保管密钥

    API Key、数据库密码——绝不进代码仓库。

  2. 区分环境

    同一份代码,本地、测试、线上各配各的值。

  3. 排查配置

    线上行为怪异?先查环境变量是不是漏配或配错了。

想一想

AI 生成的代码里直接写着 apiKey = "sk-abc…",还被推上了 GitHub。现在怎么办?

看答案

立刻去服务商后台吊销这把密钥、换新的——只从代码里删掉没用,推上去过就当已泄露。然后把新密钥放进环境变量,代码里只留 process.env.API_KEY。

最容易踩的坑

前端代码里的「环境变量」构建后会打进产物、人人可见——真正的秘密只能放在服务端。名字带 PUBLIC 前缀的,才是设计给前端用的。

⌘K搜索知识库

最近收录

正在载入知识索引…