本文详细解析Node.js中process.env全局变量的用法,涵盖Windows与Linux下临时及永久环境变量的配置方法。重点讲解如何利用process.env.NODE_ENV区分dev、uat和product环境,实现前后端分离项目中后端接口域名的动态切换,解决多环境部署时的配置差异问题。
Node.js process.env环境变量配置与多环境接口切换实战
前言
近期在推进项目部署工作时,遇到了开发(dev)、测试(uat)与生产(product)多环境配置的问题。
由于采用前后端分离架构,开发与部署过程中涉及后端接口域名的切换。经过一下午的资料查阅与实践,终于理清了Node.js中process.env环境变量的使用逻辑。
此处记录解决该问题的过程,旨在为遇到类似困惑的开发者提供参考。
Node环境变量与process对象解析
Node环境变量
在进行React或Vue单页应用开发时,配置文件中的process.env想必大家并不陌生。
若对此感到陌生,可参考相关图示说明。
具体表现为以下配置项。

从字面理解,env属性在development(开发)和production(生产)等不同环境下,其配置值存在差异。
接下来深入探讨process的具体含义。
官方文档地址:http://nodejs.cn/api/process.html
官方解释指出:process对象是一个全局变量,提供关于当前Node.js进程的信息与控制能力。作为对象,它在Node.js应用程序中始终可用,无需通过require()引入。
简而言之,process是Node.js中存在的全局变量。
通过该进程对象,我们可以获取一些关键信息。
本文重点聚焦于process.env的使用。
process.env属性详解与应用场景
process.env
它是什么?
官方定义:process.env属性返回一个包含用户环境信息的对象。
相关文档:http://nodejs.cn/api/process.html#process_process_env
由此可见,该属性用于返回项目运行所在环境的相关信息。
它有何实际用途?
一个典型应用场景是:利用该属性为服务器环境打上标签,从而根据不同环境执行不同的配置处理。例如,根据环境开启sourceMap或切换后端接口域名。
你是 dev 环境
他是 uat 环境
她是 product 环境。
Windows与Linux环境变量配置方法
如何配置环境变量
以下介绍各环境下环境变量的具体配置方法。
Windows配置
临时配置
可直接在CMD环境中进行操作,包括查看、添加或删除环境变量。
#node中常用的到的环境变量是NODE_ENV,首先查看是否存在
set NODE_ENV
#如果不存在则添加环境变量
set NODE_ENV=production
#环境变量追加值 set 变量名=%变量名%;变量内容
set path=%path%;C:\web;C:\Tools
#某些时候需要删除环境变量
set NODE_ENV=
永久配置
操作路径为:右键点击“此电脑” -> 属性 -> 高级系统设置 -> 环境变量。
Linux配置
临时配置
同样支持查看、添加或删除环境变量操作。
#node中常用的到的环境变量是NODE_ENV,首先查看是否存在
echo $NODE_ENV
#如果不存在则添加环境变量
export NODE_ENV=production
#环境变量追加值
export path=$path:/home/download:/usr/local/
#某些时候需要删除环境变量
unset NODE_ENV
#某些时候需要显示所有的环境变量
env
永久配置
需进入配置文件所在目录进行编辑。
# 所有用户都生效
vim /etc/profile
# 当前用户生效
vim ~/.bash_profile
在文件末尾添加类似如下语句以设置或修改变量。
# 在文件末尾添加如下格式的环境变量
export path=$path:/home/download:/usr/local/
export NODE_ENV = product
修改完成后,需执行以下命令使系统重新加载配置。
# 修改/etc/profile文件后
source /etc/profile
# 修改~/.bash_profile文件后
source ~/.bash_profile
利用NODE_ENV解决多环境接口切换问题
解决环境导致后端接口变换问题
明确上述概念后,即可在不同环境的机器上设置不同的NODE_ENV值。需注意,该字段名可自定义,例如改为NODE_ENV_NIZUISHUAI等,只要保持一致即可。
解决步骤
第一步:修改代码中的后端地址配置。
实现方式很简单,直接利用 process.env.NODE_ENV 字段进行判断即可(process是Node全局属性,可直接使用)。

第二步:在Linux服务器上设置对应的环境变量。
export NODE_ENV=dev
完成上述配置后,即可正常启动项目运行。
说在最后
当前项目采用React服务端渲染(SSR),因此后端请求转发未交由Nginx处理。对于纯单页应用,通常由Nginx负责请求转发。
本文成文较快,若内容存在疏漏,欢迎指正,以便共同学习进步。
若本文对您有所帮助,欢迎点赞,这将激励我继续创作。
感谢阅读。
参考文献
- 环境变量-JasperXu的博客 :http://sorex.cnblogs.com/p/6200940.html
- 如何查看并设置NODE_ENV的值? : http://cnodejs.org/topic/587dc8a62967eeb01aafe87b
- Node.js的process模块 : http://www.css88.com/archives/4548
注:【如何配置环境变量】部分内容为引用自JasperXu博客的环境变量配置说明。
总结
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对本站的支持。