你可能会说:
- “AI 让我新建一个 .env 文件,把密钥填进去,这个文件是干什么的?”
- “本地能连上数据库,部署上去怎么就连不上了?”
它是什么
把配置写死在代码里,换个环境就得改代码,密钥还会跟着代码进仓库。环境变量把这些值放在代码之外:本地通常写在 .env 文件里,线上在托管平台的后台逐项填写,程序启动时再去读。
本地和线上"表现不一样",很多时候就是两边的环境变量不一样:少了一项、值填错了,或者平台自动注入了你不知道的变量。有的程序在变量缺失时会悄悄用一个默认值继续跑,问题就藏得更深。
.env 文件里通常有密钥,不能提交进仓库;仓库里放一份只写变量名、不写值的 .env.example,告诉别人需要配置哪些项。
打个比方
像每家分店贴在后厨墙上的当班说明:用哪家供应商、保险柜密码是多少。菜谱(代码)各店一样,墙上的说明各店不同。
在这个网站里
兄弟项目 E2E Review 需要七个环境变量:数据库地址、登录签名密钥、端口、运行模式和三项 AI 模型配置。其中数据库地址和端口由 Railway 在线上自动注入;本地没有启动数据库,后端在本地根本起不来,这也是第 2 课里只能靠一个模拟接口看内容的原因。
容易搞混的地方
常见误解
.env 文件里的值,线上也会自动用上
正确理解
.env 通常只在本地读取,而且不该上传。线上要在托管平台后台另外配置一遍。
常见误解
变量没配,程序会报错提醒我
正确理解
不一定。很多代码写了"没配就用默认值",程序照常启动,只是行为悄悄变了。
你可以这样告诉 AI
复制下面这段,贴给你的 AI
列出这个项目需要的全部环境变量:名字、用途、本地从哪来、线上在哪配置、缺失时程序会怎样(报错退出,还是用默认值继续跑)。生成一份只含变量名的 .env.example,并确认 .env 已被 git 忽略。
接下来去哪
先知道
- 本地环境——你自己电脑上跑起来的那一份网站,只有你能访问,和线上那份是两套各自运行的东西。
接着看
- 后端——跑在服务器上、访客看不到的那部分程序:处理登录、读写数据、调用需要保密的接口。
在这些课里出现
相关的真实事故