Node.js:process.env与全局有何不同?

时间:2018-10-17 19:06:43

标签: javascript node.js

设置<div id="custom-erp-id-side-nav" class="custom-erp-side-nav" @mouseenter="openSideBar" @mouseleave="closeSideBar"> 这样的环境变量与创建process.env.thing = 42这样的全局变量有何不同?

什么时候比global.thing = 42更喜欢process.env.thing?这两个对象的优点/缺点是什么?

4 个答案:

答案 0 :(得分:1)

如果启动node.js应用程序,则可能需要使用一些不同的“环境”,例如API-URL和类似的东西,因为在生产/实时环境中,这些URL与本地开发环境相比通常是不同的。

这意味着您可以在启动应用程序之前使用.env文件注入这些路径。

这是一个示例:

NODE_API_URL=https://myApi.com/myEndpoints myApp.js

在设置环境变量后 将读取global.thing = bla行。

一旦应用程序运行环境变量,其他全局定义便可以由应用程序访问。

答案 1 :(得分:1)

global是全局对象。 process在全球范围内可用,因为它是global的属性。实际上:

global.process === process //-> true

process.env的属性设置为系统的环境变量。可以在节点本身之外设置多种方式,并通过访问process.env的属性来读取这些信息。

在命令行中尝试:

FOO=bar node -e "process.env.FOO"

处理模块只是全局可用的东西。

答案 2 :(得分:1)

我认为选择必须是这样的。 1)如果变量取决于环境,则必须在process.env中设置 2)如果变量只是可以从整个应用程序访问的常量,则必须将其设置为全局变量。

我认为,如果您不面对这2点,那么您就不必在这两方面都存储一些值

答案 3 :(得分:0)

来自文档NodeAPI

  

过程对象是一个全局对象,提供有关以下内容的信息:   控制当前的Node.js进程。作为全球性企业,始终   无需使用require()就可用于Node.js应用程序。

您想要将环境变量附加到该对象上,以确保不会对全局变量造成其他污染。