Node.js 開發環境與生產環境的區別
在 Node.js 中,開發環境和生產環境之間沒有區別,也就是說,您不需要應用任何特定設定來使 Node.js 在生產配置中工作。然而,npm 登錄檔中的一些庫會識別 NODE_ENV 變數並將其預設為 development 設定。請始終在執行 Node.js 時設定 NODE_ENV=production。
配置應用程式的一種流行方法是使用 十二要素應用方法論。
為什麼 NODE_ENV 被認為是一種反模式?
環境是一個數字平臺或系統,工程師可以在其中構建、測試、部署和管理軟體產品。傳統上,我們的應用程式在以下四個階段或型別的環境中執行:
- 開發(Development)
- 測試(Testing)
- 預釋出(Staging)
- 生產(Production)
NODE_ENV 的根本問題在於開發人員將最佳化和軟體行為與其軟體執行的環境結合起來。結果就是出現瞭如下程式碼:
if (.. === 'development') {
// ...
}
if (.. === 'production') {
// ...
}
if (['production', 'staging'].(..)) {
// ...
}
雖然這可能看起來無害,但它使得生產環境和預釋出環境不同,從而無法進行可靠的測試。例如,當 NODE_ENV 設定為 development 時,一個測試(也就是您產品的一個功能)可能會透過,但當 NODE_ENV 設定為 production 時則會失敗。因此,將 NODE_ENV 設定為除 production 之外的任何值都被認為是一種反模式。