一、process.env
process.env
属性返回一个包含用户环境信息的对象。
最常见的需求,前端需要根据不同的环境(dev,prd),来调用不同的后端接口。如果用webpack,是这么做的:
1)package.json里的命令:
"scripts": {
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
},
2)webpack.config.js获取
console.log(process.env.NODE_ENV) //执行npm run dev,打印development
事实上,以上从命令行获取环境变量这个件事跟webpack没有关系,执行node文件也可以这样获取。
1)新建文件test.js:
console.log(global.process.env.a);
2)命令行执行test.js:
a=1 node test.js
命令行输出a的值1。
题外话,如果顺序改变呢?命令行执行下面的命令
node test.js a=1
测试结果:test.js能被执行,但获取不到a的值。
global.process.env.a这个变量在这次node命名结束前都能获取到,如果是以后执行也能获取到,就需要用以下的命令(mac linux):
export a=2 && node test.js
这条命令运行后,只要运行node文件,在文件里可以得到 global.process.env.a的值为2.
二 、process.argv
还记得前面说过,下面的命令无法通过 process.env 获取。
node test.js a=1
这时候就要用到process.argv。他返回当前进程的所有命令行参数,是个数组,前2个元素是node命令路径和被执行的文件路径:
所以经常见到
process.argv.slice(2)
process是node的全局变量,不用require直接能访问。中文文档标注为:进程对象。它提供当前 Node.js 进程的有关信息,以及控制当前 Node.js 进程。