[英]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.