如何在 Node.js 项目中优雅管理环境变量?深入对比 `dotenv` 和 `config` 模块


一、前言

在 Node.js 项目中,环境变量的管理直接影响项目的安全性和可维护性。本文将深入对比两个流行的环境变量管理工具 dotenvconfig,从安装配置到最佳实践,助你选择最合适的方案。


二、dotenv 模块详解

1. 核心功能
  • 作用:从 .env 文件加载环境变量到 process.env
  • 定位:轻量级环境变量注入工具
2. 使用步骤

安装

npm install dotenv

基础用法

// app.js
require('dotenv').config()

console.log(process.env.DB_HOST)

.env 文件示例

DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
3. 进阶功能
// 自定义路径和环境
require('dotenv').config({
   
  path: '/custom/path/.env.production',
  override: true // 覆盖已存在的环境变量
})
4. 优缺点
优点 缺点
零配置快速接入 仅支持键值对存储
支持多环境文件 无分层配置能力
与容器化方案天然契合 缺乏类型校验
5. 适用场景
  • 小型项目快速配置
  • Docker/Kubernetes 环境
  • 需要与环境变量深度集成的场景

三、config 模块详解

1. 核心功能
  • 作用:实现多环境分层配置管理
  • 定位:企业级配置管理解决方案
2. 使用步骤

安装

npm install config

目录结构

config/
  ├── default.json
  ├── development.json
  ├── production.json
  └── custom-environment-variables.json

default.json

{
   
  "db": {
   
    "host": "localhost",
    "port": 27017
  }
}

custom-environment-variables.json

{
   
  "db": {
   
    "password": "DB_PASSWORD"
  }
}

应用中使用

const config = require('config')
console.log(config.get('db.host')) // 层级访问
3. 进阶功能
// 动态合并配置
const config = require('config')
const customConfig = {
    db: {
    timeout: 30 } }

config.util.extendDeep(config, customConfig)
4. 优缺点
优点 缺点
支持 JSON/YAML/JS 等多种格式 依赖固定目录结构
内置环境隔离机制 学习成本较高
支持配置继承与覆盖 容器化支持较弱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

seelingzheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值