Node環境變量 process.env 的那些事兒

前言

這兩天在和運維GG搞部署項目的事兒。css

碰到一個問題就是,我們的dev,uat,product環境的問題。html

由於是先後端分離,因此在開發和部署的過程當中會有對後端接口的域名的切換問題。折騰了一下午,查詢了各類資料這才把這Node環境變量process.env給弄明白。vue

下面這就作個問題解決的記錄。但願能對這個不明白的人有所幫助。node

Node環境變量

首先,我們在作reactvue的單頁應用開發的時候,相信你們對配置文件裏的process.env並不眼生。
想不起來? 黑人問號.jpg。react

就是下面這些玩意兒。linux

clipboard.png

從字面上看,就是這個 env屬性,在 developmentproduction不一樣環境上,配置會有些不一樣。nginx

行,那下面咱們開始看看這個所謂的 process究竟是個什麼東西。web

文檔:http://nodejs.cn/api/process....
官方解釋process 對象是一個 global (全局變量),提供有關信息,控制當前 Node.js 進程。做爲一個對象,它對於 Node.js 應用程序始終是可用的,故無需使用 require()vim

process(進程)其實就是存在nodejs中的一個全局變量。
而後呢,我們能夠經過這個所謂的進程能拿到一些有意思的東西。後端

不過咱們今天主要是講講 process.env

process.env

這是啥?

官方: process.env屬性返回一個包含用戶環境信息的對象。

文檔:http://nodejs.cn/api/process....

噢噢噢,原來着個屬性能返回項目運行所在環境的一些信息。

有啥用呢?

很明顯的一個使用場景,依靠這個咱們就能夠給服務器上打上一個標籤。這樣的話,咱們就能根據不一樣的環境,作一些配置上的處理。好比開啓 sourceMap,後端接口的域名切換等等。

你是 dev 環境
他是 uat 環境
她是 product 環境。

如何配置環境變量

下面講講如何配置各個環境的環境變量。

Windows配置

臨時配置

直接在cmd環境配置便可,查看環境變量,添加環境變量,刪除環境變量。

#node中經常使用的到的環境變量是NODE_ENV,首先查看是否存在 
set NODE_ENV 
#若是不存在則添加環境變量 
set NODE_ENV=production 
#環境變量追加值 set 變量名=%變量名%;變量內容 
set path=%path%;C:\web;C:\Tools 
#某些時候須要刪除環境變量 
set NODE_ENV=

永久配置

右鍵(此電腦) -> 屬性(R) -> 高級系統設置 -> 環境變量(N)...

Linux配置

臨時

查看環境變量,添加環境變量,刪除環境變量

#node中經常使用的到的環境變量是NODE_ENV,首先查看是否存在
echo $NODE_ENV
#若是不存在則添加環境變量
export NODE_ENV=production
#環境變量追加值
export path=$path:/home/download:/usr/local/
#某些時候須要刪除環境變量
unset NODE_ENV
#某些時候須要顯示全部的環境變量
env

永久

打開配置文件所在

# 全部用戶都生效
vim /etc/profile
# 當前用戶生效
vim ~/.bash_profile

在文件末尾添加相似以下語句進行環境變量的設置或修改

# 在文件末尾添加以下格式的環境變量
export path=$path:/home/download:/usr/local/
export NODE_ENV = product

最後修改完成後須要運行以下語句令系統從新加載

# 修改/etc/profile文件後
source /etc/profile
# 修改~/.bash_profile文件後
source ~/.bash_profile

解決環境致使後端接口變換問題

搞清楚這個問題後,咱們就能夠在不一樣環境的機器上設置不一樣的 NODE_ENV,固然這個字段也不必定。
你也能夠換成其餘的NODE_ENV_NIZUISHUAI等等,反正是自定義的。

解決步驟

1.修改代碼裏的後端地址配置

很簡單,就是利用 process.env.NODE_ENV這個字段來判斷。(processnode全局屬性,直接用就好了)

clipboard.png

2.在linux上設置環境變量

export NODE_ENV=dev

而後你就能夠去愉快的啓動項目玩了。

說在最後

由於我如今這個項目 React 服務端渲染。因此後端的請求轉發就沒交給nginx進行處理。
像日常的純單頁應用,通常是用nginx進行請求轉發的。

本篇成文比較快,哈哈,若是文內有任何的紕漏,還請指點,我也就學習學習啦。

另外,若是這篇小小的文章對你帶來幫助,不妨給我點個贊吧,這將是我繼續下的一大動力。

謝謝~~

參考文獻

環境變量-JasperXu的博客 :http://sorex.cnblogs.com/p/62...
如何查看並設置NODE_ENV的值? :http://cnodejs.org/topic/587d...
Node.js的process模塊 : http://www.css88.com/archives...

注:【如何配置環境變量】這一塊的內容,是直接引用的 JasperXu的博客 的環境變量。

感謝上面三位的好文。

相關文章
相關標籤/搜索