.env 文件解析器
在线解析 .env 文件,以表格形式可视化键值对,按 dotenv 的规则检测缺少等号、冒号写法、重复键、空值等问题,并导出 JSON。免费,在浏览器中处理。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
示例
# 数据库配置
DB_HOST=localhost
DB_PORT=5432
DB_NAME=myapp
DB_PASSWORD="s3cr3t"
# API 密钥
API_KEY=
STRIPE_KEY=your-stripe-key
# 重复键示例
APP_ENV=development
APP_ENV=production
解析器去掉 DB_PASSWORD 的引号,把 API_KEY 标为“值为空”,第二个 APP_ENV 标为“键重复”,状态行显示“有效 6 个,警告 2 个。”。导出的 env.json 中 APP_ENV 取最后的值:
{
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_NAME": "myapp",
"DB_PASSWORD": "s3cr3t",
"API_KEY": "",
"STRIPE_KEY": "your-stripe-key",
"APP_ENV": "production"
}
冒号、空格与其他键名
dotenv 也接受类似 YAML 的 KEY: value,但冒号后必须有空格。dotenv 会跳过的行在表格中显示为错误,不进入导出;dotenv 接受但写法少见的键显示警告,照常导出:
SITE_NAME: 示例商城
export API_BASE: https://api.example.cn/v1
CDN HOST=static.example.cn
feature.flag=on
PORT:8080
{
"SITE_NAME": "示例商城",
"API_BASE": "https://api.example.cn/v1",
"feature.flag": "on"
}
状态行显示“有效 2 个,警告 1 个,错误 2 个。”。第 3 行键名中有空格,dotenv 的键名规则 [\w.-]+ 不允许,所以是错误;第 5 行冒号后没有空格。
Node.js 自带的解析器(—env-file、util.parseEnv())规则不同:Node.js 22.23.3 读这段文本时保留 CDN HOST 和 feature.flag,三行冒号写法全部忽略。
名为 proto 的键是导出与 dotenv.parse() 唯一不同的地方,dotenv 会丢掉这个键:
__proto__=keep
A=1
{
"__proto__": "keep",
"A": "1"
}
常见 .env 问题检测
- 缺少 = 号——该行既没有
=也没有冒号,无法解析为键值对。 - 冒号写法不对——
PORT:8080、PORT : 8080会被 dotenv 跳过,写成PORT=8080或PORT: 8080。 - 空值——键存在但值为空,可能导致运行时错误。
- 重复键——同一键出现多次,dotenv 取最后一个值,其他加载器不一定如此。
- 键名不符合常见规则——键名最好以字母或下划线开头,只含字母、数字和下划线。含
.、-或以数字开头的键 dotenv 仍会加载(警告);含空格等其他字符的键不会加载(错误)。 - 未加引号的值里有 #——dotenv 从这里开始算注释,所以
COLOR=#fff是空值,URL=https://example.com/#top会丢掉#top。给值加上引号。规则见 dotenv 解析规则。
限制
- 不展开变量。
${HOME}/data原样保留;dotenv-expand、Docker Compose 和部分框架会展开这类引用。 - 只按 dotenv 的规则。Node.js
—env-file、Docker Compose 的env_file、Python 的 python-dotenv 和 shell 的source对引号、冒号、export和#各有处理方式,请以实际使用的加载器为准。 - 值以明文显示。表格不会遮盖密钥,共享屏幕时注意;需要分享文件时,先用 API Key 脱敏工具替换值。
FAQ
支持哪种 .env 语法?
dotenv 16.6.1(Node.js 的 dotenv 包)的解析规则:每行一个 KEY=VALUE,或冒号后带空格的 KEY: value,可带 export 前缀。键名可以使用字母、数字、_、. 和 -。以 # 开头的行是注释。未加引号的值后面的 # 开始行内注释,所以 PORT=5432 # default 得到 5432;引号内的 # 保留。带引号的值可以跨多行。
如何处理带引号的值?
值两侧的单引号、双引号、反引号会被去掉,引号内的空白保留。只有双引号值会把 \n 转成换行。没有闭合的引号保留在值里,备注列会标出。
什么情况会报错?
dotenv 会跳过的行显示为错误,也不会导出:既没有 = 也没有冒号(缺少 = 号)、键为空、键里有空格等 dotenv 不允许的字符(如 MY KEY=1,备注为键名不符合常见规则)、冒号后没有空格或冒号前有空格(如 PORT:8080)。空值、重复键,以及 dotenv 接受但不符合 [A-Za-z_][A-Za-z0-9_]* 的键(如 my.key、9KEY)显示警告,这些键照常导出。
数据会上传到服务器吗?
不会。所有解析均在浏览器中通过 JavaScript 完成,文本不会在访问之间保存。.env 文件里通常有密钥,所以本页也不加载 Google Analytics 和 AdSense。
导出的 JSON 格式是什么?
表格中所有没有报错的键组成的 JSON 对象,与 dotenv.parse() 的结果相同。注释行和报错行不包含在内。重复键取最后一个值,与 dotenv 一致;表格里每次出现都会标注警告。唯一的差别是名为 __proto__ 的键:本工具把它作为普通属性导出,dotenv.parse() 会丢掉它。导出 JSON 只在点击解析之后、并且至少有一个可导出的键时可用。