个人记录:Node 动态识别运行环境
可能我的描述不准确
可以动态识别当前环境是开发模式还是线上模式
比如:
var HOST = {
DEV:'192.168.1.235',
PRO:'192.168.1.231'
}
var PORT = {
DEV:'8080',
PRO:'802'
}
var PATH = {
DEV:'/mockjsdata/2',
PRO:''
}
var RUN = 'PRO';
工作中大家都有几种环境的区分,开发环境,测试环境,线上环境,对于我之前的一个项目来讲,区别在于host:port/path,在开发环境–>测试环境–>线上环境,每次都是手动在代码里修改 RUN 的值,很麻烦,所以主管便让我实现可以动态识别…
BUT,我是前端菜鸟啊,不懂啥教动态识别啊,于是乎百度…谷歌…群友…各种咨询,也许是我描述不对,所以并没有得到想要的答案。
然而呢,突然发现这个问题其实很简单的,之前没怎么接触过命令行,常用的命令不过是 node * cnpm install *
node里边其实有个 process 对象,这个对象是Node的一个全局对象,它提供当前Node进程的信息。它可以在脚本的任意位置使用,不必通过require命令加载。好了,废话说完了,真正的干货在下边…
process.env
process.env
属性返回一个对象,包含了当前Shell的所有环境变量。比如,process.env.HOME返回用户的主目录。
我的做法是,新建一个环境变量RUN,用它确定当前所处的开发阶段,生产阶段设为PRO,开发阶段设为DEV,然后在脚本中读取process.env.RUN即可。
运行脚本时,改变环境变量,可以采用下面的写法。
var HOST = {
DEV:'192.168.1.235',
PRO:'192.168.1.231'
}
var PORT = {
DEV:'8080',
PRO:'802'
}
var PATH = {
DEV:'/mockjsdata/2',
PRO:''
}
var RUN = process.env.RUN||'DEV';
然后在运行文件时这个样子:
set RUN=PRO && node ./bin/www
好了,这样就可以了,首先会先读取RUN有没有赋值,如果没有就默认使用开发地址,如果设置了值就会使用设置的地址,当然你也可以增加判断,如果输入不正确进行提示之类的…
关于process对象的详细介绍,可以去看下阮大神的文章:http://javascript.ruanyifeng.com/nodejs/process.html#toc4
全文完,希望对初学Node的大家有些许帮助