登录
No.27核心2 条来源

环境变量Environment Variables

课堂投屏

一句话

环境变量是程序启动时从外部读取的配置,常用来放密钥、数据库地址等不该写死在代码里的值。

大白话

环境变量像交给值班员的交接便条:同一个值班员(代码),在不同地方上班会拿到不同的便条,上面写着当地的门禁密码和联系电话。

比喻的边界

便条本身没上锁;谁能看到运行环境或打包后的前端代码,谁就能读到里面的值,它不是保险箱。

拿去就能用

开始做

我的项目要用的密钥。帮我改成从环境变量读取,写一个只有变量名、没有真实值的 .env.example,并确认 .env 已加进 .gitignore。真实的值我自己填,不要让我贴到聊天里。

还差:某个服务,发给 AI 前记得换掉

出错了

本地能读到环境变量,部署上线后读到的是空值。我怀疑没在部署平台上配置,或者配完没重新部署。先帮我列出线上需要哪些变量名,告诉我去平台哪里检查,不要输出任何真实值。

想做深

我想分清开发和线上两套配置,比如用不同的数据库。帮我列出所有变量的名称、用途、是否敏感、分别在哪里配置,并检查有没有密钥被打包进前端代码。先给清单再改。

别这样说 → 这样说

别这样说

程序读不到环境变量,你帮我看看,这是我的 .env 文件。(后面贴了真实密钥)

这样说

我在 .env 里加了 DATABASE_URL,程序启动后读到的是 undefined。下面是变量名和读取它的代码,值已换成 ***。帮我按顺序查:有没有代码或框架在加载 .env、文件位置、变量名拼写、前端变量是否需要特定前缀、是否需要重启,确认原因再改。

差别:只给变量名、不给真实值,并列出了排查顺序。

容易误解:

误解放进环境变量的密钥就安全了,前端也能放心用。

其实是前端用到的环境变量会在构建时写进浏览器下载的代码里,任何人都看得到;密钥只能在服务器端使用。

展开专业理解

环境变量是运行环境传给程序进程的键值对,Node.js 通过 process.env 读取。.env 文件是本地开发时集中写变量的方式,本身要排除在 Git 之外。Node.js 本身不会自动读取 .env,通常靠框架或 dotenv 这类库加载;Vite 只把 VITE_ 开头的变量暴露给前端,并在构建时直接替换进代码,所以不能放密钥。改了变量通常要重启程序或重新部署才生效。

来源

  1. Node.js 文档:Environment Variables 核对于 2026-09-26
  2. Vite 文档:Env Variables and Modes 核对于 2026-09-26