關於如何在部署環境修改process.env & 本地測試


前言

最近在搞一些監控的東西, 需要根據不同的環境上報到不同的地址,中間遇到了一些問題,在這里簡單總結分享下。

關於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);

這樣就可以了 :)

希望對大家有所啟發, 謝謝。

來源:https://segmentfault.com/a/1190000016574361


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM