首頁>技術>

專案開發的時候一般根據程式碼的執行環境不將環境分為開發、測試和生產,不同的環境有不同的配置資訊。開發環境會對程式進行任意的除錯和修改,所以環境可能會存在很多錯誤。測試環境與生產環境很相似,主要用來測試需要上線的專案和功能。一般是測試環境測試透過才會轉到生產環境,來確保專案可以正常的執行。生產環境是在對外使用的真實線上環境,為保證系統的正常執行一般不會在生產環境做改動。

process

process(程序)是NodeJS提供的一個全域性物件,可以提供當前NodeJS的程序資訊。因為process是全域性變數,所以無需透過 require()載入就可以使用。process物件提供一系列屬性,用於返回系統資訊。

process.env

env是process中的一個物件,可以返回當前專案執行所在環境資訊。開啟命令列輸入node再輸入process.env,就可以打印出process.env物件的相關資訊。該物件是NodeJS所處的當前程序,允許開發者與該程序互動。這樣我們就可以根據不同的環境,做一些環境配置上的處理。

process.env.NODE_ENV

從上面的process.env物件我們可以看到env物件中並沒有NODE_ENV屬性,而是在專案構建的時候透過設定得到的。NODE_ENV只是使用者自定義的變數,只是這個變數語義比較恰當所以被大家一致採納而已。當我們在服務啟動時配置NODE_ENV,JS便可以透過process.env.NODE_ENV獲取其值。我們可以透過判斷這個變數區分開發環境或生產環境,這樣也就可以實現根據不同的環境變數載入不同服務配置。

環境配置env.json

我們可以建立一個env.json檔案來定義不同環境下的各伺服器配置,比如:development、test、production分別對應開發、測試和生產環境。配置中可以根據專案需求來定義相應的設定,如後臺伺服器的ip、埠、資料庫的使用者名稱、密碼、快取驅動等資訊。

載入環境配置env.json

我們可以在建立NodeJS服務的之後載入這個配置檔案,根據環境變數 NODE_ENV 來載入了對應的各個環境變數配置,如果沒有設定則預設使用 development。這裡需要注意的是我們在載入配置資訊的時候並不是直接將配置引數賦值給NODE_ENV屬性,而是透過Object.assign將其複製到了env物件下。如果你直接將物件賦值給變數NODE_ENV,你會發現得到的是個[object object]而不是鍵值對(因為NODE_DNV是string型別,賦值之後物件被自動轉換成string字串)。

獲取環境變數內的配置

獲取我們剛才設定的專案配置資訊只需要透過 process.env.params 拿到對應的變數值,比如我們想拿到剛剛配置的baseUrl可以透過process.env.baseUrl獲取對應的值。當我們定義了NODE_ENV值時NodeJS會自動載入對應的配置資訊,這樣就可以方便我們在打包的時候快速切換執行環境。

package.json配置啟動命令

定義NODE_ENV可以透過執行指令碼來是實現,在package.json的JavaScript物件中透過 export NODE_ENV=development || SET \"NODE_ENV=development\" 來分別設定 Linux 和 Windows 系列系統的環境變數。這時候process.env.NODE_ENV就可以獲取當前的環境變數對應的配置資訊,這樣我們在啟動服務的時候就可以透過不同的命令來切換不同的執行環境。

總結:

如果不想用json檔案也可以用js檔案來定義配置,再利用module.exports 匯出也一樣。也可以參考Vue的給每個環境配置一個檔案(.env.dev、.env.test、.env.serve),根據不同的環境載入不同的檔案配置即可。以上內容是小編給大家分享的【Node實戰009:process.env配置專案環境】。希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。

9
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 如何獲取檔案建立或修改日期,VBA程式設計技巧介紹