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进行请求转发