環境變數#

環境變數是與 Node.js 程序執行環境相關聯的變數。

CLI 環境變數#

有一組環境變數可以用來定製 Node.js 的行為,更多詳情請參閱 CLI 環境變數文件

process.env#

與環境變數互動的基本 API是 process.env,它是一個包含了預填充使用者環境變數的物件,可以被修改和擴充套件。

更多詳情請參閱 process.env 文件

DotEnv#

一套用於處理在 .env 檔案中定義的額外環境變數的工具集。

穩定性:2 - 穩定

.env 檔案#

.env 檔案(也稱為 dotenv 檔案)是定義環境變數的檔案,Node.js 應用程式可以與之互動(由 dotenv 包推廣)。

以下是一個基本 .env 檔案內容的示例:

MY_VAR_A = "my variable A"
MY_VAR_B = "my variable B" 

這類檔案在多種不同的程式語言和平臺中使用,但沒有正式的規範,因此 Node.js 定義了自己的規範,如下所述。

一個 .env 檔案是一個包含鍵值對的檔案,每個鍵值對由一個變數名、後跟等號(=)、再後跟一個變數值來表示。

這類檔案的名稱通常是 .env 或以 .env 開頭(例如 .env.dev,其中 dev 表示一個特定的目標環境)。這是推薦的命名方案,但不是強制性的,dotenv 檔案可以有任何任意的檔名。

變數名#

一個有效的變數名必須只包含字母(大寫或小寫)、數字和下劃線(_),且不能以數字開頭。

更具體地說,一個有效的變數名必須匹配以下正則表示式:

^[a-zA-Z_]+[a-zA-Z0-9_]*$ 

推薦的慣例是使用大寫字母,並在必要時使用下劃線和數字,但任何符合上述定義的變數名都能正常工作。

例如,以下是一些有效的變數名:MY_VARMY_VAR_1my_varmy_var_1myVarMy_Var123,而這些則是無效的:1_VAR'my-var'"my var"VAR_#1

變數值#

變數值由任意文字組成,可以選擇性地用單引號(')或雙引號(")包裹。

帶引號的變數可以跨越多行,而不帶引號的則限制在單行內。

請注意,當被 Node.js 解析時,所有值都被解釋為文字,這意味著任何值在 Node.js 內部都會變成一個 JavaScript 字串。例如,以下值:0true{ "hello": "world" } 將分別產生字面量字串 '0''true''{ "hello": "world" }',而不是數字零、布林值 true 和一個帶有 hello 屬性的物件。

有效變數的示例:

MY_SIMPLE_VAR = a simple single line variable
MY_EQUALS_VAR = "this variable contains an = sign!"
MY_HASH_VAR = 'this variable contains a # symbol!'
MY_MULTILINE_VAR = '
this is a multiline variable containing
two separate lines\nSorry, I meant three lines' 
空格#

變數鍵和值周圍的前導和尾隨空白字元會被忽略,除非它們被包含在引號內。

例如:

   MY_VAR_A   =    my variable a
    MY_VAR_B   =    '   my variable b   ' 

將被視為與以下內容完全相同:

MY_VAR_A = my variable a
MY_VAR_B = '   my variable b   ' 
註釋#

井號(#)字元表示註釋的開始,意味著該行餘下的部分將被完全忽略。

然而,在引號內的井號被視為任何其他標準字元。

例如:

# This is a comment
MY_VAR = my variable # This is also a comment
MY_VAR_A = "# this is NOT a comment" 
export 字首#

export 關鍵字可以可選地新增在變數宣告之前,該關鍵字在對檔案的所有處理中都將被完全忽略。

這很有用,以便檔案可以在 shell 終端中無需修改地被 source。

示例

export MY_VAR = my variable 

CLI 選項#

.env 檔案可以透過以下 CLI 選項之一來填充 process.env 物件:

程式設計 API#

以下兩個函式允許你直接與 .env 檔案互動:

  • process.loadEnvFile 載入一個 .env 檔案並用其變數填充 process.env

  • util.parseEnv 解析一個 .env 檔案的原始內容並以物件形式返回其值