龙空技术网

Node实战009:process.env配置项目环境

编程手札 618

前言:

现在同学们对“ubuntunode配置环境变量”大约比较看重,大家都想要剖析一些“ubuntunode配置环境变量”的相关知识。那么小编在网络上搜集了一些关于“ubuntunode配置环境变量””的相关文章,希望你们能喜欢,大家一起来学习一下吧!

重点:本文是NodeJS项目环境的配置,不是NodeJS开发环境的配置。Windows开发环境可以参考文章【Node实战001:Windows搭建Node开发环境 】,Linux开发环境可以参考文章【Linux实战017:Ubuntu搭建NodeJS开发环境

项目开发的时候一般根据代码的运行环境不将环境分为开发、测试和生产,不同的环境有不同的配置信息。开发环境会对程式进行任意的调试和修改,所以环境可能会存在很多错误。测试环境与生产环境很相似,主要用来测试需要上线的项目和功能。一般是测试环境测试通过才会转到生产环境,来确保项目可以正常的运行。生产环境是在对外使用的真实线上环境,为保证系统的正常运行一般不会在生产环境做改动。

process

process(进程)是NodeJS提供的一个全局对象,可以提供当前NodeJS的进程信息。因为process是全局变量,所以无需通过 require()加载就可以使用。process对象提供一系列属性,用于返回系统信息。

process.env

env是process中的一个对象,可以返回当前项目运行所在环境信息。打开命令行输入node再输入process.env,就可以打印出process.env对象的相关信息。该对象是NodeJS所处的当前进程,允许开发者与该进程互动。这样我们就可以根据不同的环境,做一些环境配置上的处理。

process.env.NODE_ENV

从上面的process.env对象我们可以看到env对象中并没有NODE_ENV属性,而是在项目构建的时候通过设置得到的。NODE_ENV只是用户自定义的变量,只是这个变量语义比较恰当所以被大家一致采纳而已。当我们在服务启动时配置NODE_ENV,JS便可以通过process.env.NODE_ENV获取其值。我们可以通过判断这个变量区分开发环境或生产环境,这样也就可以实现根据不同的环境变量加载不同服务配置。

环境配置env.json

我们可以创建一个env.json文件来定义不同环境下的各服务器配置,比如:development、test、production分别对应开发、测试和生产环境。配置中可以根据项目需求来定义相应的设置,如后台服务器的ip、端口、数据库的用户名、密码、缓存驱动等信息。

加载环境配置env.json

我们可以在创建NodeJS服务的之后加载这个配置文件,根据环境变量 NODE_ENV 来加载了对应的各个环境变量配置,如果没有设置则默认使用 development。这里需要注意的是我们在加载配置信息的时候并不是直接将配置参数赋值给NODE_ENV属性,而是通过Object.assign将其拷贝到了env对象下。如果你直接将对象赋值给变量NODE_ENV,你会发现得到的是个[object object]而不是键值对(因为NODE_DNV是string类型,赋值之后对象被自动转换成string字符串)。

获取环境变量内的配置

获取我们刚才设置的项目配置信息只需要通过 process.env.params 拿到对应的变量值,比如我们想拿到刚刚配置的baseUrl可以通过process.env.baseUrl获取对应的值。当我们定义了NODE_ENV值时NodeJS会自动加载对应的配置信息,这样就可以方便我们在打包的时候快速切换运行环境。

package.json配置启动命令

定义NODE_ENV可以通过运行脚本来是实现,在package.json的JavaScript对象中通过 export NODE_ENV=development || SET \"NODE_ENV=development\" 来分别设置 Linux 和 Windows 系列系统的环境变量。这时候process.env.NODE_ENV就可以获取当前的环境变量对应的配置信息,这样我们在启动服务的时候就可以通过不同的命令来切换不同的运行环境。

总结:

如果不想用json文件也可以用js文件来定义配置,再利用module.exports 导出也一样。也可以参考Vue的给每个环境配置一个文件(.env.dev、.env.test、.env.serve),根据不同的环境加载不同的文件配置即可。以上内容是小编给大家分享的【Node实战009:process.env配置项目环境】。希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

标签: #ubuntunode配置环境变量