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
相关推荐
xiangxiongfly91514 小时前
Node http
http·node·文件上传·请求·文件下载·响应
小笔学长3 天前
持续集成与持续部署(CI/CD):自动化流程
自动化·项目实战·后端开发·ci/cd自动化·jenkins工具
aiguangyuan4 天前
Nest 与 TypeORM Cli 集成
node·后端开发·nest
linux开发之路4 天前
C++高性能日志库开发实践
c++·c++项目·后端开发·c++新特性·c++校招
启扶农7 天前
lecen:一个更好的开源可视化系统搭建项目--介绍、搭建、访问与基本配置--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一个懂你的人
低代码·vue·node·所见即所得·表单设计·页面可视化·页面设计器
叫我阿柒啊8 天前
从Java全栈到前端框架:一场真实的技术面试对话
java·vue.js·spring boot·微服务·typescript·前端开发·后端开发
weixin_531651819 天前
Node.js 流操作
node.js·node·stream
亚林瓜子12 天前
nodejs里面的百分号解码之URLSearchParams
开发语言·javascript·ecmascript·node·url·百分号编码