开始支持的Nodejs版本:v20.6.0,官方地址:Command-line options
之前 Nodejs 项目要读取项目配置的环境变量,通常需要依赖第三方的包。比如 cross-env
、dotenv
。现在 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
文件中的配置
是不是更简单了
实际使用请看我个人博客项目中的代码
完结
感谢您的阅读