Node中的process.env

发表于: 2023-01-14 03:47:18

简介: node 中的全局变量 process 表示当前的 node 进程, process 其实就是存在于 Node.js 中的一个全局变量, 包含着关于系统环境的信息

process 是什么

node 中的全局变量 process 表示当前的 node 进程,process 其实就是存在于 Node.js 中的一个全局变量,包含着关于系统环境的信息

今天想对 Blog 的 Node 服务端进行区分环境,然后连接不同的数据库,但是在 process.env 中并不存在 NODE_ENV 这个东西,NODE_ENV 只是一个用户自己定义的一个变量

process.env.XXX 中的 XXX 是开发者自己定义的一个变量, 就比如 process.env.NODE_ENV

那如何配置一个变量呢?

Windows 环境变量设置

// 设置环境变量
set NODEE_ENV=production
// 删除环境变量
set NODE_ENV=

Linux 环境变量设置

// 设置环境变量
export NODE_ENV=production
// 删除环境变量
unset NODE_ENV
// 查询全部环境变量
env

常用脚本配置

在 package.json 中配置

"script": {
    "start-win": "set NODE_ENV=production && node app.js",
    "start-linux": "export NODE_ENV=production && node app.js"
}

踩坑

我在 Windows 上使用时发现,在Node中判断 process.env.NODE_ENV == 'production' 输出为 false
后面尝试使用 trim() 去掉首尾空格后,process.env.NODE_ENV.trim() == 'production' 时才为 true

Linux 下暂未尝试

修改脚本后则正常

"script": {
    "start-win": "set NODE_ENV=production&&node app.js"
}

process.env.NODE_ENV == 'production' --> true

跨平台方案 cross-env

什么是 cross-env?

它是一个运行跨平台设置和使用环境变量的脚本,cross-env 让开发者可以使用单个命令来设置和使用环境变量,不用再担心因为平台而产生的设置或使用差异

安装

npm install cross-env --save-dev

设置

"script": {
    "start": "cross-env NODE_ENV=production && node app.js"
}

使用

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

最后更新于:2023-01-14 03:47:18