Dotenv 入门教程
什么是 Dotenv?
Dotenv 是一个轻量级的 Node.js 模块,用于将环境变量从 .env
文件加载到 process.env
对象中。它帮助开发者将敏感信息(如数据库密码、API 密钥)与代码分离,提升应用的安全性和可配置性。
快速开始
1. 安装 Dotenv
在项目根目录执行以下命令:
npm install dotenv
2. 创建 .env
文件
在项目根目录新建 .env
文件,添加环境变量:
DB_HOST=localhost
DB_USER=root
DB_PASS=your_secure_password
API_KEY=12345abc
3. 加载环境变量
在应用入口文件(如 index.js
)顶部添加:
require('dotenv').config();
或使用 ES6 语法:
import 'dotenv/config';
4. 访问变量
通过 process.env
对象获取变量:
console.log(process.env.DB_HOST); // 输出 localhost
高级配置
自定义文件路径
指定非根目录的 .env
文件:
require('dotenv').config({ path: './config/.env.custom' });
或通过环境变量指定:
DOTENV_CONFIG_PATH=./.env.custom node app.js
调试模式
开启调试以排查加载问题:
require('dotenv').config({ debug: true });
多环境配置
创建不同环境的文件(如 .env.development
、.env.production
),使用时通过 --env-file
指定:
node --env-file=.env.production app.js
最佳实践
1. 安全第一
- 忽略
.env
文件:在.gitignore
中添加.env
,避免提交到版本控制。 - 敏感信息管理:生产环境建议使用秘密管理工具(如 AWS Secrets Manager、HashiCorp Vault)。
2. 变量命名规范
- 使用全大写和下划线分隔(如
STRIPE_API_KEY
)。 - 避免重复或模糊的命名。
3. 生产环境优化
- Node.js 14+ 支持原生
--env-file
标志,减少依赖:node --env-file=.env app.js
- Docker 用户可通过
docker run -e VAR=value
传递变量。
4. TypeScript 支持
安装类型声明包:
npm install @types/dotenv --dev
或在 tsconfig.json
中配置:
{"compilerOptions": {"types": ["node", "dotenv"]}
}
常见问题
变量未加载?
- 检查
.env
文件路径是否正确。 - 确保
require('dotenv').config()
在代码顶部执行。 - 变量名是否包含特殊字符(建议仅用字母、数字、下划线)。
如何设置默认值?
使用逻辑或操作符:
const port = process.env.PORT || 3000;
在 React 中使用?
需配合 dotenv-webpack
插件:
- 安装插件:
npm install dotenv-webpack --dev
- 修改
webpack.config.js
:const Dotenv = require('dotenv-webpack'); module.exports = {plugins: [new Dotenv()] };
示例项目结构
project-root/
├── .env
├── .env.production
├── index.js
├── package.json
└── node_modules/
替代方案
- Node.js 原生方案(v20.6.0+):
node --env-file=.env app.js
- 秘密管理工具:Infisical、Doppler、AWS Secrets Manager
通过 Dotenv,你可以更安全、高效地管理应用配置。立即开始,让你的项目告别硬编码!