Egg 運行環(huán)境

2020-02-06 14:10 更新

一個 Web 應用本身應該是無狀態(tài)的,并擁有根據(jù)運行環(huán)境設置自身的能力。

指定運行環(huán)境

框架有兩種方式指定運行環(huán)境:

  1. 通過 config/env 文件指定,該文件的內(nèi)容就是運行環(huán)境,如 prod。一般通過構(gòu)建工具來生成這個文件。
// config/env
prod
  1. 通過 EGG_SERVER_ENV 環(huán)境變量指定運行環(huán)境更加方便,比如在生產(chǎn)環(huán)境啟動應用:
EGG_SERVER_ENV=prod npm start

應用內(nèi)獲取運行環(huán)境

框架提供了變量 app.config.env 來表示應用當前的運行環(huán)境。

運行環(huán)境相關(guān)配置

不同的運行環(huán)境會對應不同的配置,具體請閱讀 Config 配置。

與 NODE_ENV 的區(qū)別

很多 Node.js 應用會使用 NODE_ENV 來區(qū)分運行環(huán)境,但 EGG_SERVER_ENV 區(qū)分得更加精細。一般的項目開發(fā)流程包括本地開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境等,除了本地開發(fā)環(huán)境和測試環(huán)境外,其他環(huán)境可統(tǒng)稱為服務器環(huán)境,服務器環(huán)境的 NODE_ENV 應該為 production。而且 npm 也會使用這個變量,在應用部署的時候一般不會安裝 devDependencies,所以這個值也應該為 production。

框架默認支持的運行環(huán)境及映射關(guān)系(如果未指定 EGG_SERVER_ENV 會根據(jù) NODE_ENV 來匹配)

NODE_ENVEGG_SERVER_ENV說明
local本地開發(fā)環(huán)境
testunittest單元測試
productionprod生產(chǎn)環(huán)境

例如,當 NODE_ENV 為 production 而 EGG_SERVER_ENV 未指定時,框架會將 EGG_SERVER_ENV 設置成 prod。

自定義環(huán)境

常規(guī)開發(fā)流程可能不僅僅只有以上幾種環(huán)境,Egg 支持自定義環(huán)境來適應自己的開發(fā)流程。

比如,要為開發(fā)流程增加集成測試環(huán)境 SIT。將 EGG_SERVER_ENV 設置成 sit(并建議設置 NODE_ENV = production),啟動時會加載 config/config.sit.js,運行環(huán)境變量 app.config.env 會被設置成 sit。

與 Koa 的區(qū)別

在 Koa 中我們通過 app.env 來進行環(huán)境判斷,app.env 默認的值是 process.env.NODE_ENV。但是在 Egg(和基于 Egg 的框架)中,配置統(tǒng)一都放置在 app.config 上,所以我們需要通過 app.config.env 來區(qū)分環(huán)境,app.env 不再使用。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號