Node项目中两个常用的环境变量配置工具

1. 安装依赖

按下图所示安装相关依赖。

bash 复制代码
{
    "name": "demo0",
    "version": "1.0.0",
    "main": "index.js",
    "scripts": {
        "dev": "cross-env NODE_ENV=development node index.js",
        "prod": "cross-env NODE_ENV=production node index.js"
    },
    "keywords": [ ],
    "author": "",
    "license": "ISC",
    "description": "",
    "dependencies": {
        "config": "^4.1.1",
        "cross-env": "^10.1.0",
        "dotenv": "^17.2.3",
        "js-yaml": "^4.1.1"
    }
}

安装完cross-env依赖后,为了测试不同的启动环境,需要添加两个不同的启动环境变量。

2. dotenv的使用

这个工具库适合配置一些简单的环境变量,格式只能是键值对这种格式的,不支持嵌套和对象格式。

新建一个.env文件在项目根目录下,添加如下变量:

javascript 复制代码
TOKEN_SECRET =  "your_secret_token_here_env"
DATABASE_URL = "postgresql://user:password@localhost:5432/yourdatabase"

然后在文件中就可以如下方式获取.env里面配置的环境变量。

javascript 复制代码
require('dotenv').config();
console.log(process.env)

输出结果如下所示,在.env里面配置的变量就可以看到了。

3. config的使用

这个工具库可以配置一些比较复杂的数据格式,比如常见的json格式。

在项目根目录下新建一个config的文件夹,添加default.json文件,这个文件里是默认配置。

javascript 复制代码
{
    "token_secret": "long-token_secret",
    "database": {
        "host": "www.default.com",
        "port": 9526,
        "name": "my_database",
        "password": "db_password"
    }
}

然后在文件中就可以用以下方式获取配置的环境变量。

javascript 复制代码
const config = require('config');
const databaseConfig = config.get('database');
console.log(databaseConfig);

需要区分环境可以分别添加development.json和production.json这两个文件。

javascript 复制代码
{
    "database": {
        "host": "www.production.com",
        "port": 9529
    }
}

当默认配置和生产环境配置共存时,执行生产环境的启动命令时,生产环境中定义配置将会与默认配置进行合并,相同的变量名将会被生产环境的覆盖。

开发环境的也同样如此,只需要另外定义一个development.json即可。

以下是在生产环境合并后的输出:

config这个库不仅支持json文件的配置 ,还支持其它很多文件类型的配置,比如yaml文件类型的配置,需要注意的是,为了解析yaml的文件类型,需要安装相应的解析器js-yaml。

以下是关于yaml的配置信息,可以结合上面的输出结果来看。

default.yaml

javascript 复制代码
"token_secret": "long-token_secret"
"database": 
    "host": "www.default.com"
    "port": 8080
    "name": "database_name"
    "password": "123456"

development.yaml

javascript 复制代码
"database":
  "host": "www.development.com"
  "port": 9527

production.yaml

javascript 复制代码
"database":
  "host": "www.production.com"
  "port": 9528
相关推荐
Javatutouhouduan3 天前
RocketMQ是怎么保存偏移量的?
java·消息队列·rocketmq·java面试·消息中间件·后端开发·java程序员
utmhikari12 天前
【架构艺术】治理后端稳定性的一些实战经验
java·开发语言·后端·架构·系统架构·稳定性·后端开发
一条咸鱼_SaltyFish12 天前
Elasticsearch索引规划:从字段类型到分片策略的实战思考
大数据·elasticsearch·搜索引擎·全文检索·后端开发·分片策略·索引规划
予枫的编程笔记12 天前
【YF技术周报 Vol.01】OpenAI 国会指控 DeepSeek,字节发布 Seedance 2.0,Java 26 预览版来了
java·人工智能·openai·后端开发·ai技术·spring ai·deepseek
REDcker13 天前
FFmpeg完整文档
linux·服务器·c++·ffmpeg·音视频·c·后端开发
予枫的编程笔记13 天前
【Docker进阶篇】Docker Compose 实战:一键启动Web+数据库+缓存,微服务环境部署不再绕弯
人工智能·docker·开发效率工具·容器编排·docker compose·后端开发·微服务部署
予枫的编程笔记13 天前
【Docker进阶篇】拒绝重复构建镜像!.env文件+Profile实现多环境无缝切换
docker·环境变量·docker镜像·后端开发·配置管理·多环境配置·.env文件
REDcker14 天前
curl开发者快速入门
linux·服务器·c++·c·curl·后端开发
予枫的编程笔记14 天前
【Docker基础篇】Docker网络模式初探之bridge模式与端口映射
docker·后端开发·端口映射·容器网络·bridge模式·docker入门·容器实操
REDcker14 天前
curl完整文档
c++·c·curl·服务端·后端开发