主题
第 9 章 秘密与配置 · 环境变量、API Key 与 .env
有些东西永远不能写进代码。数据库密码,API Key,钱包助记词。代码会进 Git,会上 GitHub,会被 AI 反复读来读去。代码天生是要流传的,秘密天生是不能流传的。
解决办法是把秘密放在代码外面的口袋里,代码运行时伸手去摸。这个口袋就是环境变量(Environment Variable)。本地开发时,习惯把它们集中写在一个叫 .env 的文件里,再在 .gitignore(一份"Git 请忽略这些文件"的清单)里写上 .env,确保这个口袋永远不会被拍进存档。线上呢?部署平台(Vercel、Supabase)都有专门的设置页面让你填环境变量。同一份代码,本地穿一件马甲,线上穿另一件,口袋里装着不同的钥匙。这也是开发环境和生产环境这两个词的一半含义,同样的代码,不同的口袋。
判断一个东西算不算秘密,就问一句,陌生人拿到它会怎样?能花你的钱、动你的数据、冒充你的身份,那就是秘密,进环境变量。只是个公开的项目地址?那不算。
万一泄露了怎么办?记住一条反直觉的铁律,去服务商后台立刻作废(revoke)并换新(rotate)那把钥匙,光把那行代码删掉没有任何用。Git 是时间机器,历史存档里它还在。凡是曾经出现在 GitHub 上的秘密,一律当作已经泄露处理。
关键领悟
秘密管理是一种习惯。养成了,几乎零成本。没养成,一次事故就够你疼一年。
试一试
打开我们项目里的 .env 文件(还有 .gitignore),认一认里面每一把钥匙分别开哪扇门。不确定的,问 AI。