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
相关推荐
胡斌附体15 小时前
linux(ubuntu)拉取源码进行docker容器部署
linux·git·ubuntu·docker·node·nvm
悟空码字15 小时前
SpringBoot深度整合高德地图,构建高性能位置服务
java·springboot·高德地图·编程技术·后端开发
像少年啦飞驰点、3 天前
零基础入门 Redis:从“缓存是什么”到自己动手写一个高并发计数器
spring boot·redis·缓存·编程入门·后端开发·小白教程
像少年啦飞驰点、4 天前
Spring Boot 从入门到实践:快速构建一个 RESTful API 服务
java·spring boot·后端开发·快速入门·restful api·编程小白
REDcker4 天前
OpenSSL 完整文档
c++·安全·github·c·openssl·后端开发
人间春风意5 天前
记:node 环境变量引发的问题
node
REDcker5 天前
libwebsockets完整文档
c++·后端·websocket·后端开发·libwebsockets
REDcker8 天前
RESTful API设计规范详解
服务器·后端·接口·api·restful·博客·后端开发