你是否在 GitHub 上 clone 过别人的项目,发现根目录有个叫 .env 的文件?或者自己用 Flask、Node.js、Vue 写项目时,教程让你创建一个 .env 文件,里面写入数据库账号和 API 密钥,但紧接着又说:'千万别把这个文件提交到 Git!'
你可能一脸问号:这文件是干啥的?为什么不能上传?那别人怎么跑我的项目?本文将讲清楚 .env 文件的作用、原理和安全规范。
一、.env 是什么?
.env(全称 environment file)是一个纯文本配置文件,用来存储当前运行环境所需的敏感信息或可变参数,比如:
- 数据库账号密码
- 第三方 API 密钥(如微信、阿里云、OpenAI)
- 服务端口、调试开关、日志级别等
它最大的特点是:不写死在代码里,而是从外部注入。
举个 Node.js 的例子:
// 错误做法:直接写在代码里
const dbPassword = "123456";
// 正确做法:从环境变量读取
const dbPassword = process.env.DB_PASSWORD;
而 .env 文件就是用来在本地开发时自动加载这些环境变量的。
二、它是怎么工作的?
大多数现代框架都支持 .env 自动加载,比如:
| 框架 | 加载方式 |
|---|---|
| Node.js | 使用 dotenv 包 |
| Python (Flask/Django) | 使用 python-dotenv |
| Vue/React | 内置支持(以 VUE_APP_ 或 REACT_APP_ 开头) |
以 Node.js 为例:
- 安装
dotenv:
npm install dotenv
- 在代码最顶部加入:
require('dotenv').config(); // 自动读取 .env 文件
之后就可以通过 process.env.DB_PASSWORD 获取值了!
💡 原理:
dotenv会读取.env文件,把每一行解析成键值对,并注入到process.env中。
三、为什么绝对不能提交到 Git?
⚠️ 核心原因:.env 里通常包含敏感信息!
想象一下:
- 你把
.env提交到 GitHub - 里面写着


