NODE_MODULES:项目中动态加载环境变量配置

开始

在平时的 Node.js 项目开发中,我们需要在项目中添加各种各样的配置:服务端口、服务地址、图片上传、数据库、Redis 等等。

通常情况下我们会在项目的根目录中添加config.js或者config.json配置文件,然后在需要使用到的时候,在项目中require配置文件。

module.exports = {SERVER: 'https://www.example.com',PORT: 7890,REDIS: '127.0.0.1:6379',MONGODB: 'mongodb://127.0.0.1:27017/example'
} 

config.js

通过使用配置文件在大部分情况下比较简单明了,但是如果有多个配置环境的时候就有一些棘手,有的同学会说可以通过判断NODE_ENV是否为production来判断是否使用生产环境配置,那样的话就需要在项目运行的时候在命令行中添加

NODE_ENV=production node index.js

现在我们可以通过使用dotenv的第三方包,在项目的根目录中添加.env的配置文件,就可以在项目中使用process.env的环境变量配置

使用

基本使用

dotenv就是一个可以通过加载配置文件,将配置动态添加到 Node.js 的执行环境变量中。

首先我们在项目中添加.env配置文件

NODE_ENV=production
SERVER=https://www.example.com
PORT=7890
REDIS=127.0.0.1:6379
MONGODB=mongodb://127.0.0.1:27017

.env

然后在我们的项目入口文件中使用dotenv加载配置

// index.js
const config = require('dotenv').config();
const http = require('http');const port = process.env.PORT || '1337';
const server = http.createServer((rea, res) => {  res.status(200).send('Server is Running') }) server.listen(port); 

或者我们也可以在命令行启动的时候添加

node -r dotenv/config index.js

添加之后我们就可以在整个项目中使用 process.env来使用环境变量的配置了。

高级使用

解析状态

我们可以在加载配置文件之后添加配置文件的加载是否成功的判断,如果加载的过程中出现错误,解析之后 config.error包含了加载的错误信息。config.parsed包含了解析成功的配置参数,在脚本操作中使用 config.parsed是比较方便的。

const config = dotenv.config()if (config.error) {throw config.error
}console.log(config.parsed) 

更改配置文件

如果我们不想使用.env配置文件,想使用.config或者类似于vue-cli的环境变量文件配置.env.production,我们可以在加载配置文件的时候将配置文件名称更改即可

// index.js
const config = require('dotenv').config({ path: '/custom/path/to/.env.production' })
const http = require('http');const port = process.env.PORT || '1337';
const server = http.createServer((rea, res) => {  res.status(200).send('Server is Running') }) server.listen(port); 

更多的内容可以查看模块的地址

参考

  • Github 地址:motdotla/dotenv

  • NPM地址:dotenv

更多

更多的内容请关注GitHub,知乎@大手印,或者关注我的公众号@全栈开发师,我会不定时分享一些全栈方向的开发内容,谢谢分享


本文使用 mdnice 排版

Node.js项目中动态加载环境变量配置相关推荐

  1. 一劳永逸部署项目:通过tomcat加载环境变量

    一劳永逸部署项目:通过tomcat加载环境变量 转载自:https://blog.csdn.net/u010414666/article/details/46499953 一.说明 项目中经常会用到x ...

  2. NPM酷库:dotenv,从文件加载环境变量

    NPM酷库,每天两分钟,了解一个流行NPM库.· 我们经常需要Node.js程序运行时加载不同的配置,比如开发环境和生产环境的数据数据库配置就可能不一样,使用 process.env.DB_HOST ...

  3. Dubbo(七)之自动加载环境变量

    转载自  自动加载环境变量 在 Dubbo 中自动加载环境变量 从 2.7.3 版本开始,Dubbo 会自动从约定 key 中读取配置,并将配置以 Key-Value 的形式写入到URL中. 支持的 ...

  4. Node.js(一、Node.js基础、模块加载机制、包等)

    Node.js(一.Node.js基础.模块加载机制.包等) 1.Node.js基础 1.1.Node是什么 1.2.Node环境安装失败解决方法 1.2.1.Node环境搭建 1.2.2.错误代码2 ...

  5. Node.js模块以及模块加载机制

    2019独角兽企业重金招聘Python工程师标准>>> Node.js中的模块 在Node.js中,以模块为单位划分功能,通过一个完整的模块加载机制使得开发人员可以将应用程序划分为多 ...

  6. bpl文件java,在LoadLibrary中动态加载BPL失败

    我想在Delphi 10 Seattle(Update 1)或Delphi 10.1 Berlin项目(Enterprise版本)中动态加载BPL模块 . 但LoadPackage函数失败并显示消息( ...

  7. Java中动态加载字节码的方法 (持续补充)

    文章目录 Java中动态加载字节码的方法 1.利用 URLClassLoader 加载远程class文件 2.利用 ClassLoader#defineClass 直接加载字节码 2.1 类加载 - ...

  8. 在VC中动态加载ODBC的方法

    在VC中动态加载ODBC的方法     在使用VC.VB.Delphi等高级语言编写数据库应用程序时,往往需要用户自己在控制面板中配置ODBC数据源.对于一般用户而言,配置ODBC数据源可能是一件比较 ...

  9. python requests 动态加载_Python获取网页中动态加载的数据

    Python获取网页中动态加载的数据 0.XHR 是什么? XHR是 XMLHttpRequest 对象.既Ajax功能实现所依赖的对象,在JQuery中的Ajax是对 XHR的封装. 1.查看异步加 ...

最新文章

  1. c# 监视目录下的文件变化
  2. php 7.1安装教程
  3. 百练2811:熄灯问题
  4. 百题大冲关系列课程更新啦!这次是 Golang
  5. win8.1注册表-修改资源管理器的默认路径regedit
  6. linkedin爬虫_机器学习的学生和从业者的常见问题在LinkedIn上提问
  7. ES6之const命令
  8. 1.x到2.x的迁移:可观察与可观察:RxJava FAQ
  9. docker的简单操作和端口映射
  10. 【计算机网络复习 数据链路层】3.5.3 CSMA协议
  11. 推荐系统相关资源汇总
  12. 双系统ubuntu 删除后重装
  13. gson 不忽略空_仅在不为null或不为空的情况下,Gson序列化字段
  14. Android反编译与防止反编译
  15. android 扇形统计动画,Android自定义View——扇形统计图的实现代码
  16. 京东商品类目查询接口
  17. 数据分析引擎之Kylin学习笔记
  18. python离线录音转文字软件_如何将语音文件转换为文字?这5款软件轻松做到!...
  19. 多语言机器翻译 | (1)多语言翻译模型简介
  20. 数据结构银行排队系统c语言,数据结构银行排队系统实验报告

热门文章

  1. 「 SLAM lesson-2.3 」SLAM数学描述、运动方程、观测方程
  2. MATLAB实现已知DH参数的正运动方程求解
  3. 下一轮人工智能泡沫,或将由消费机器人引发
  4. 【SUMO学习】初级 OSMWebWizard
  5. 冒泡排序算法基本思路
  6. 计算机二级C语言编程题解读:计算学生成绩的标准差
  7. MIMIC-III数据库的应用(一)
  8. OutLook中添加、取消送信者禁止
  9. GD32 开机直接进入了深度睡眠模式导致无法下载
  10. uni-app 自定义导航栏 图片按钮