Node.js中環境變量process.env詳解
process | Node.js API 文檔
http://nodejs.cn/api/process.html
官方解釋:process 對象是一個 global (全局變量),提供有關信息,控制當前 Node.js 進程。
作為一個對象,它對於 Node.js 應用程序始終是可用的,故無需使用 require()。
process(進程)其實就是存在nodejs中的一個全局變量,所有模塊都可以調用。
http://nodejs.cn/api/process.html#process_process_env
node框架經常會看到類似的代碼:
if (process.env.NODE_ENV === 'production') {
module.exports = require('./prod.js')
} else {
module.exports = require('./dev.js')
}
該對象表示Node所處的當前進程,允許開發者與該進程互動。
打開命令行,輸入node,再輸入process.env,可以看見process.env是一個對象。
on Windows:
set NODE_ENV=dev
on OS X or Linux:
export NODE_ENV=dev
直接寫在js文件:
process.env.NODE_ENV = 'production';
然后在package.json:
"scripts": {
"start": "set NODE_ENV=dev && node app.js"
}
------------------------
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,這個字段可以換成其他自定義的。
解決步驟
1.修改代碼里的后端地址配置
利用 process.env.NODE_ENV這個字段來判斷。(process是node全局屬性,直接用就行了)
2.在linux上設置環境變量
export NODE_ENV=dev
純單頁應用,一般是用nginx進行請求轉發