前言
最近在搞一些監控的東西, 需要根據不同的環境上報到不同的地址
,中間遇到了一些問題,在這里簡單總結分享下。
關於process.env
假如你對process.env 相關的概念還不熟悉, 請移步:
Node環境變量 process.env 的那些事兒 , 這篇文章總結的比較好。
webpack 在構建的時候, 可以為process.env 賦值:
// Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = 'development';
process.env.NODE_ENV = 'development';
// Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = 'production';
process.env.NODE_ENV = 'production';
process 對象是一個 global (全局變量),提供有關信息,控制當前 Node.js 進程。作為一個對象,它對於 Node.js 應用程序始終是可用的,故無需使用 require()。
假如你需要根據不同的部署環境做一些區分, 比如:
if (process.env.env === "test") {
BASE_API_1 = 'xxx
} else if (process.env.env === "uat") {
BASE_API_1 = 'xxx
} else if (process.env.env === "staging") {
BASE_API_1 = 'xxx
} else if (process.env.env === "live") {
BASE_API_1 = 'xxx'
} else {
BASE_API_1 = 'xxx';
}
比如用的是jenkins, 構建的時候會自動給環境變量加一個env 屬性, 也就是上面看到的env.env, 不同的環境會有不同的值, 比如 uat, staging, live
;
本地構建的時候, 是取不到這個值的, 因為沒有這個環境。 但是你也可以手動來賦值, 比如給env.env 賦值為'test', 就可以在終端執行:
env=test yarn start
隨便打印一下:
console.log(process.env.env);
這樣就可以了 :)
希望對大家有所啟發, 謝謝。