环境变量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_ 开头的变量暴露给前端,并在构建时直接替换进代码,所以不能放密钥。改了变量通常要重启程序或重新部署才生效。
来源
- Node.js 文档:Environment Variables 核对于 2026-09-26
- Vite 文档:Env Variables and Modes 核对于 2026-09-26