dotenv

dotenv 的作用、.env 文件格式以及环境变量的基本用法。

#status / growing #type / concept #tech / dev

[!info] related notes

dotenv

在现代软件开发中,dotenv 是一个非常基础但又至关重要的概念。简单来说,它是一种将配置变量(如数据库密码、API 密钥)从代码中分离出来的管理方式。

通常,这些变量被存储在一个名为 .env 的纯文本文件中。


1. 为什么需要 dotenv?

在没有 dotenv 之前,开发者可能会直接把敏感信息写在代码里(即“硬编码”)。这会带来两个大问题:

  • 安全风险:如果你把代码上传到 GitHub,全世界都能看到你的密钥。
  • 环境差异:你在本地开发时用的数据库地址,和项目上线后用的数据库地址肯定不一样。频繁修改代码来适应环境非常低效。

dotenv 通过引入环境变量解决了这些问题。


2. .env 文件长什么样?

.env 文件通常放在项目的根目录下,格式非常简单,就是 键=值

PORT=3000
DATABASE_URL=postgres://user:password@localhost:5432/mydb
STRIPE_API_KEY=sk_test_4eC39HqLyjWDarjtT1zdp7dc
DEBUG=true

3. 工作原理

当你运行程序时,dotenv 库(在 Node.js 中是 dotenv 包,在 Python 中是 python-dotenv)会执行以下操作:

  1. 读取 .env 文件。
  2. 解析 其中的键值对。
  3. 注入 到操作系统的环境变量中(例如 Node.js 的 process.env 或 Python 的 os.environ)。

4. 最佳实践(避坑指南)

在使用 dotenv 时,请务必遵守以下原则:

  • 千万不要提交 .env 文件: 一定要在 .gitignore 文件中加入 .env。它应该只留在你的本地设备和生产服务器上。
  • **提供 .env.example**: 既然不提交真实的 .env,你应该创建一个 .env.example 文件,里面只写键名不写值(例如 PORT=),方便其他开发者知道需要配置哪些变量。
  • 区分环境: 你可以根据需要创建 .env.development.env.production 等,虽然标准的 dotenv 默认读取 .env,但大多数框架(如 Vite, Next.js, Django)都支持这种多环境扩展。

5. 简单代码示例 (Node.js)

// 1. 引入并配置
require('dotenv').config();

// 2. 使用变量
const port = process.env.PORT || 8080;
const dbKey = process.env.DATABASE_URL;

console.log(`服务器运行在端口: ${port}`);

总结一下: dotenv 就像是给你的代码配置了一个“外部大脑”,让代码保持纯净和安全,而把敏感和多变的配置留给环境自己处理。

你想了解如何在特定的编程语言(比如 Python 或 Java)中具体配置 dotenv 吗?

创建于 2026/2/24 更新于 2026/5/27