簡體   English   中英

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

[英]Node.js: How does process.env differ from global?

設置類似於process.env.thing = 42的環境變量與創建諸如global.thing = 42的全局變量global.thing = 42不同?

什么時候更喜歡process.env.thing不是global 這兩個對象的優缺點是什么?

如果啟動node.js應用程序,則可能需要使用一些不同的“環境”,例如API-URL和類似的東西,因為在生產/現場環境中,這些URL與本地開發環境相比通常是不同的。

這意味着您可以在啟動應用程序之前使用.env文件注入這些路徑。

這是一個例子:

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

設置環境變量 ,將讀取global.thing = bla行。

一旦應用程序運行,該應用程序即可訪問環境變量和其他全局定義。

global是全局對象。 process是全局可用的,因為它是global的屬性。 事實上:

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

process.env屬性設置為系統的環境變量。 可以在節點本身之外設置各種方式,並通過訪問process.env屬性來讀取這些方式。

在命令行中嘗試:

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

處理模塊只是全球可用的東西。

我認為選擇必須是這樣的。 1)如果變量取決於環境,則必須在process.env中設置。2)如果變量只是可以從整個應用程序訪問的常量,則必須將其設置為global。

我認為,如果您不面對這2點,則無需在這兩個方面都存儲一些值

來自docs NodeAPI

流程對象是一個全局對象,可提供有關當前Node.js流程的信息並對其進行控制。 全局而言,它始終可用於Node.js應用程序,而無需使用require()。

您想要將環境變量附加到該對象,以確保不會對全局變量造成其他污染。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM