有沒有辦法在Node.js代碼中讀取環境變量?
例如,例如Python的os.environ['HOME']
。
#1樓
如果要使用在Node.js程序中生成的字符串鍵(例如var v = 'HOME'
,則可以使用process.env[v]
。
否則,必須在程序中對process.env.VARNAME
進行硬編碼。
#2樓
使用Node.js時 ,可以通過鍵從process.env
對象中檢索環境變量:
例如
-
var mode = process.env.NODE_ENV;
-
var apiKey = process.env.apiKey; // '42348901293989849243'
這是解釋在node.js中設置環境變量的答案
#3樓
process.env.ENV_VARIABLE
其中ENV_VARIABLE
是您要訪問的變量的名稱。
有關process.env
請參見Node.js文檔 。
#4樓
您可以使用env包來管理每個項目的環境變量:
- 在項目目錄下創建一個
.env
文件,並將所有變量放在此處。 - 將此行添加到應用程序條目文件的頂部:
require('dotenv').config();
做完了 現在,您可以使用process.env.ENV_NAME
訪問環境變量。
#5樓
要在Node.JS中檢索環境變量,可以使用process.env.VARIABLE_NAME ,但不要忘記在process.env上分配屬性會將其隱式轉換為字符串。
避免布爾邏輯
即使您的.env文件定義了SHOULD_SEND = false或SHOULD_SEND = 0之類的變量,這些值也將轉換為字符串 (分別為“ false”和“ 0” ),並且不會解釋為布爾值。
-
if (process.env.SHOULD_SEND) {
-
mailer.send();
-
} else {
-
console.log("this won't be reached with values like false and 0");
-
}
相反,您應該進行顯式檢查。 我發現,取決於環境名稱會走很長一段路。
-
db.connect({
-
debug: process.env.NODE_ENV === 'development'
-
});
#6樓
為什么不在.bash_profile
文件的Users目錄中使用它們,這樣就不必將任何帶有變量的文件推入生產環境了
注意:
有時候在/etc/profile加了環境變量,也source過了,但nodejs程序通過process.env.xxx 顯示undefined。這時候我們需要重啟服務器,重啟過后就找到了。