返回术语

后端

环境变量Environment Variable

你可能会问

环境变量到底是什么?为什么密钥不能直接写进代码里?

简单来说

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

动态说明代码之外的口袋Environment Variable
代码里只有名字

DB_URLprocess.env.DB_URL

API_KEYprocess.env.API_KEY

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

01 · 先这样理解

把抽象概念放进真实场景

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

换个角度想

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

02 · 点击演示

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

突出显示的部分,就是当前概念在整条流程中负责的位置。

  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 / 4

Name · 代码里只写名字

03 · 放进真实任务

什么时候会遇到它

保管密钥

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

区分环境

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

排查配置

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

04 · 想一想

用一个问题检查理解

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

查看答案

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

老师提醒

最容易踩的坑

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

⌘K搜索知识库

最近收录

正在载入知识索引…