当前位置: 首页 > 后端技术 > Node.js

Node环境变量process.env的那些事儿

时间:2023-04-03 16:20:12 Node.js

前言这两天一直在和运维GG一起做部署项目。遇到的一个问题是我们的开发、uat和产品环境。因为前后端分离,在开发部署过程中会出现切换后端接口域名的问题。折腾了一个下午,查找了各种资料,终于弄明白了Node的环境变量process.env。下面是解决问题的记录。希望对不懂的人有所帮助。Node环境变量首先,我们在开发react和vue单页应用的时候,相信大家对配置文件中的process.env并不陌生。不记得?黑色问号.jpg。这些是下面的东西。从字面上理解就是这个env属性,在开发和生产的不同环境下配置会有些不同。好了,下面开始看看这个所谓的流程是什么。文档:http://nodejs.cn/api/process....官方解释:进程对象是一个global(全局变量),提供相关信息,控制当前Node.js进程。作为一个对象,它始终对Node.js应用程序可用,因此无需使用require()。进程(process)在nodejs中其实是一个全局变量。然后,我们可以通过这个所谓的过程得到一些有趣的东西。但是今天我们主要讲的是process.env。什么是process.env?官方:process.env属性返回一个包含用户环境信息的对象。文档:http://nodejs.cn/api/process....哦哦哦,原来有个属性可以返回一些项目运行环境的信息。什么用途?一个很明显的使用场景,靠这个我们可以给服务器打上标签。这样我们就可以根据不同的环境做一些配置处理了。比如开启sourceMap,切换后端接口的域名等等。你在dev环境,他在uat环境,她在product环境。如何配置环境变量下面说一下如何为各个环境配置环境变量。Windows配置临时配置可以直接在cmd环境下配置,查看环境变量,添加环境变量,删除环境变量。#node中常用的环境变量是NODE_ENV,首先查看是否有setNODE_ENV#如果不存在,添加环境变量setNODE_ENV=production#环境变量附加值setvariablename=%variablename%;variablecontentsetpath=%path%;C:\web;C:\Tools#有时需要删除环境变量setNODE_ENV=永久配置右击(本电脑)->属性(R)->高级系统设置->环境变量(N)..Linux配置临时查看环境变量,添加环境变量,删除环境变量#node中常用的环境变量是NODE_ENV,先查看是否有echo$NODE_ENV#如果不存在,添加环境变量exportNODE_ENV=production#环境变量添加值exportpath=$path:/home/download:/usr/local/#有时候需要删除环境变量unsetNODE_ENV#有时候需要显示所有环境变量env永久打开配置文件where#所有用户生效vim/etc/profile#当前用户生效vim~/.bash_profile在文件末尾添加类似下面的语句设置或修改环境变量#添加如下格式的环境变量at文件末尾exportpath=$path:/home/download:/usr/local/exportNODE_ENV=product最后修改后,需要运行以下语句重新加载系统#修改/etc/profile后filesource/etc/profile#修改~/.bash_profile文件后source~/.bash_profile解决了导致后端接口的环境转换问题弄清楚这个问题后,我们可以在不同环境的机器上设置不同的NODE_ENV,的当然,这个字段不一定。也可以改成其他的NODE_ENV_NIZUISHUAI等,反正都是自定义的。解决步骤1.代码中修改后端地址配置很简单,就是使用字段process.env.NODE_ENV来判断。(process是一个node全局属性,直接用就行)2.在linux上设置环境变量exportNODE_ENV=dev,然后就可以愉快的启动项目玩了。在最后说吧,因为我现在正在为这个项目做React服务端渲染。所以后端的请求转发并没有交给nginx处理。和普通的纯单页应用一样,一般使用nginx做请求转发。这篇文章写的比较快,哈哈,如果文章有什么错误,还请大家多多指点,我会学习学习的。另外,如果这篇小文章对你有帮助,请给我一个赞,这将是我继续下去的很大动力。谢谢~~参考环境变量-JasperXu的博客:http://sorex.cnblogs.com/p/62...如何查看和设置NODE_ENV的值?:http://cnodejs.org/topic/587d。..Node.js进程模块:http://www.css88.com/archives...注:【如何配置环境变量】本节内容直接引用JasperXu博客的环境变量。感谢以上三位的精彩写作。