Nodejs 原生支持 .env 文件了

开始支持的Nodejs版本:v20.6.0,官方地址:Command-line options

之前 Nodejs 项目要读取项目配置的环境变量,通常需要依赖第三方的包。比如 cross-envdotenv。现在 Node 原生支持了,新项目可以少装依赖了

背景

一个项目在开发到上线的过程中,后端提供的API接口通常会部署在不同地方

  • 开发初期接口可能在后端开发的本地,我们联调的时候需要连接后端的电脑进行调试
  • 联调完成需要部署到测试环境给测试去测
  • 测试完成后,在上线前期可能会存在一个预发布环境再次验证
  • 最后上线会发布到生成环境

为了避免每次都手动去改各种环境带来的人为的错误,我们通常需要提前配置不同的环境变量的文件,在运行代码时自动去读取相关的配置文件在项目根目录下会编写如下的几个文件(一个环境写一个.env.xxx文件)

.env
.env.test
.env.production
...

.env 文件内的格式如下:

// 每一行都是一个键值对
// name 和 value 通过 "=" 连接
baseurl=https://xxx.xxx.xxx
secret_key=xxxxxxxxxx
xxxx=xxxxxx

过去的用法

安装 cross-env

详细介绍请移步官网查看:cross-env

这个模块的作用主要就是用来设置环境变量,同时保证在不同平台下,同样的命令效果一致

用法:

"scripts": {
    "build:prod": "cross-env NODE_ENV=production webpack --config build/webpack.config.js",
    "build:test": "cross-env NODE_ENV=test webpack --config build/webpack.config.js",
    ...
  }

然后我们在项目中,通过下面的代码拿到当前运行的环境的环境变量

console.log(process.env.NODE_ENV ) // production

如果 我们项目需要的环境变量很少,到这一步也基本能满足了

// 在需要用到环境变量的文件中使用
let baseUrl = ""
let DEV = process.env.NODE_ENV
if (DEV === "production") {
	baseUrl = "线上地址"
}
if (DEV === "test") {
	baseUrl = "测试地址"
}
if (DEV === "dev") {
	baseUrl = "开发地址"
}

如果我们配置比较复杂,可能只用上面的步骤就不太实用了。此时就需要读取不同环境的 .env 文件了

安装 dotenv

详细介绍请看它的github仓库:dotenv

首先在代码中引入 dotenv

// ES6的的方式引入
import 'dotenv/config'

// 或者

require('dotenv').config()

使用:

// 通过如下代码就能拿到当前环境对应的.env文件中的配置了
console.log(process.env)

现在的用法

首先修改 package.json 中的代码

"scripts": {
    "start": "node --env-file=.env.production index.js"
  }

然后项目中直接通过 process.env 拿到 .env 文件中的配置

是不是更简单了

实际使用请看我个人博客项目中的代码

完结

感谢您的阅读

文章归类于: 学习笔记

文章标签: #Nodejs#前端

版权声明: 自由转载-署名-非商用