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
相关推荐
Java爱好狂.2 天前
复杂知识简单学!Springboot加载配置文件源码分析
java·spring boot·后端·spring·java面试·后端开发·java程序员
realhuizhu3 天前
拿着顶级服务器跑慢查询,就像开着法拉利送外卖
ai编程·sql优化·后端开发·数据库性能·deepseek
自律的蜗牛4 天前
Systemd(Linux 系统级守护,最稳定)node
docker·容器·node
Javatutouhouduan4 天前
Java面试常问Redis核心知识点整理!
java·数据库·redis·java面试·后端开发·java架构师·java程序员
realhuizhu5 天前
你的接口很好,但在使用者眼里,它可能只是个打不开的黑盒
效率工具·后端开发·api文档·开发者体验·promptengineering
我爱学习_zwj6 天前
Node.js:从浏览器到服务器的JS革命
javascript·node