process是什么
process是nodejs中的全局对象,不需要require进来,就可以直接使用,获取进程信息操作进程
获取当前工作目录
process.cwd() 或
process.env.pwd
__dirname
输出结果如图:
获取文件绝对位置
console.log(__filename)
触发警告
参数格式:process.emitWarning(warning[, options])
Emit a warning with a code and additional detail
触发一个带有唯一标识符与附加详细信息的警告
process.emitWarning('Something happened!', {
code: 'MY_WARNING',
detail: 'This is some additional information'
});
触发结果:
(node:56338) [MY_WARNING] Warning: Something happened!
This is some additional information
在上面例子中, process.emitWarning()内部生成了一个Error对象,并传递给process.on('warning')事件。
环境变量
通过process.env
获取环境变量信息
获取到的是带有各种环境信息的对象,如当前路径,path,主路径等,如获取当前路径:process.env.pwd
, 与process.cwd()
作用一样
当然,我们也可以自定义各种环境变量
, 如:
process.env.myname = "jianfeng"
则执行process.env.myname
理所当然的输出jianfeng
,这样我们可以自定义一些信息便于全局获取,非常有用,如开发中,我们常定义process.env.NODE_ENV
定义当前是开发模式
还是生产模式
删除环境变量可通过:
delete process.env.属性名
Windows 操作系统上,环境变量不区分大小写
。
获取命令行参数
process.argv
process.argv 属性返回一个数组
,其中包含当启动 Node.js 进程时传入的命令行参数。 第一个元素是 process.execPath, 即命令首个参数的原始地址
,如node, npm, git等的原始地址, 第二个元素将是正在执行的 JavaScript 文件的路径
。 其余元素将是任何其他命令行参数。
如执行命令:
$ node process.js ck=1
通过console.log(process.argv)
输出内容为:
[ 'C:\\Program Files\\nodejs\\node.exe',
'C:\\Users\\kejianfeng\\Projects\\node-learning\\process.js',
'ck=1' ]
通过process.argv[2]
可获取最后的命令参数 ck=1
process.argv0
process.argv0
属性保存当 Node.js 启动时传入的 argv[0] 的原始值的只读副本
。
如:
$ node process.js ck=1
> process.argv[0]
'C:\\Program Files\\nodejs\\node.exe'
> process.argv0
'node.exe'
改变工作目录
如现在的工作目录是
kejianfeng@crazylife MINGW64 ~/Projects/node-learning
在执行过程中需要切换到某目录下继续执行,如进入到node-learning目录下的dir2文件执行,则只需要这样做:
process.chdir('./dir2')
再打印一下当前目录:
C:\Users\kejianfeng\Projects\node-learning\dir2
符合预期
控制台数据输入和接收
process.stdout
进行提示输入
process.stdin
监听输入并处理
如
process.stdout.write("请输入你的名字:");
process.stdin.on('data', (input) => {
console.log("名字为" + input);
})
执行情况如图
我们可以对用户输入进行操作