Nodejs中的常用的模块
- process
- os
- path
- fs
process
process
对象是一个全局变量,提供对 nodejs
进程的相关信息与控制接口。
常用属性
-
argv
=>String[]
nodejs
启动时传入的命令行参数,第一个参数process.execPath/process.argv0
, 即node服务的启动执行路径;第二个元素将是正在执行的 JavaScript 文件的路径。其余元素将是任何其他命令行参数。执行命令
node node.js 1 '2=3' 3 4
// node.js process.argv.forEach((item, index) => { console.log(`${index}: ${item}`); }); // 0: /Users/dyh/.nvm/versions/node/v10.13.0/bin/node // 1: /Users/dyh/WebstormProjects/node-practice/nodedemo/node.js // 2: 1 // 3: 2=3 // 4: 3 // 5: 4
-
arch
=>String
返回一个表示操作系统CPU架构的字符串。
e.g:
'arm'
,'arm64'
,'ia32'
,'mips'
,'mipsel'
,'ppc'
,'ppc64'
,'s390'
,'s390x'
,'x32'
, 或'x64'
-
chdir(String dir)
=>void
process.chdir()
方法变更Node.js进程的当前工作目录,如果变更目录失败会抛出异常(例如,如果指定的目录不存在)console.log(`当前目录: ${process.cwd()}`); try { process.chdir('/tmp'); console.log(`更改后目录: ${process.cwd()}`); } catch (err) { console.error(`错误信息: ${err}`); }
-
cwd()
=>String
返回 Node.js 进程的当前工作目录
'/Users/dyh/WebstormProjects/node-practice/nodedemo'
-
env
=>Object
返回当前用户的环境对象,可修改如:
process.env.BROWSER = true
{ TERM: 'xterm-256color', SHELL: '/usr/local/bin/bash', // bash所在位置 USER: 'maciej', // 用户名 PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin', // 环境变量 PWD: '/Users/maciej', EDITOR: 'vim', SHLVL: '1', HOME: '/Users/maciej', // 用户目录 LOGNAME: 'maciej', _: '/usr/local/bin/node' }
-
exit(Integer code)
=>void
强制退出当前
nodejs
进程,即使还有尚未完全完成的异步操作,包括对process.stdout
和process.stderr
的I/O
操作,退出码为code
, 默认为0// 如何正确设置退出码,同时让进程正常退出。 if (someConditionNotMet()) { printUsageToStdout(); // 此处设置退出码而不直接调用exit()方法,是为了让进程正常退出,而不是强制退出 process.exitCode = 1; }
-
hrtime(Array<Integer> time)
=>Array<Integer> = [seconds, nanoseconds]
返回当前时间以[seconds, nanoseconds]
tuple Array表示的高精度解析值,nanoseconds
是当前时间无法使用秒的精度表示的剩余部分,time
是上一次调用process.hrtime()
的结果,给此参数传入一个用户定义的数组,而不是传入上次调用process.hrtime()
的结果,会导致未定义的行为;process.hrtime()
返回的时间,都是相对于过去某一时刻的值,与一天中的时钟时间没有关系,因此不受制于时钟偏差。 此方法最主要的作用是衡量间隔操作的性能。const NS_PER_SEC = 1e9; const time = process.hrtime(); // [ 1800216, 25 ] setTimeout(() => { const diff = process.hrtime(time); // [ 1, 552 ] console.log(`Benchmark took ${diff[0] * NS_PER_SEC + diff[1]} nanoseconds`); // benchmark took 1000000552 nanoseconds }, 1000);
-
memoryUsage()
=>Object
返回
Node.js
进程的内存使用情况的对象,该对象每个属性值的单位为字节。{ rss: 4935680, // 驻留集大小, 是给这个进程分配了多少物理内存 heapTotal: 1826816, // V8总内存 heapUsed: 650472, // V8已使用内存 external: 49879 // V8管理的,绑定到Javascript的C++对象的内存 }
-
pid
=>Integer
当前进程的PID
-
ppid
=>Integer
当前父进程的进程ID
-
platform
=>String
当前运行的
Nodejs
进程的操作系统平台 -
nextTick(callback[, ...args])
args
=> 调用callback
时传入的其他参数
将
callback
添加到下一个时间点的队列。 一旦当轮的事件循环全部完成,则调用下一个时间点的队列中的所有回调, 其优先级大于setTimeout(fn, 0)
, 它会在事件循环的下一个时间点中触发任何其他 I/O 事件(包括定时器)之前运行 -
uptime()
=>Integer
返回当前
Node.js
进程运行时间秒长, 包含秒的分数, 需要使用Math.floor()
来得到整秒钟 -
version
=>String
返回当前
Node.js
的版本信息 -
versions
=>Object
Node.js
和其依赖的版本信息{ http_parser: '2.7.0', node: '8.9.0', v8: '6.3.292.48-node.6', uv: '1.18.0', zlib: '1.2.11', ares: '1.13.0', modules: '60', nghttp2: '1.29.0', napi: '2', openssl: '1.0.2n', icu: '60.1', unicode: '10.0', cldr: '32.0', tz: '2016b' }
-
stdin
=>Stream
返回连接到
stdin
(fd0
) 的流。 它是一个net.Socket
流(也就是双工流),除非 fd0
指向一个文件,在这种情况下它是一个可读流process.stdin.setEncoding('utf8'); process.stdin.on('readable', () => { const chunk = process.stdin.read(); if (chunk !== null) { process.stdout.write(`数据: ${chunk}`); } }); process.stdin.on('end', () => { process.stdout.write('结束'); });
-
stdout
=>Stream
返回连接到
stdout
(fd1
) 的流。 它是一个net.Socket
流(也就是双工流),除非 fd1
指向一个文件,在这种情况下它是一个可写流process.stdin.pipe(process.stdout);
-
stderr
=>Stream
返回连接到
stderr
(fd2
) 的流。 它是一个net.Socket
流(也就是双工流),除非 fd2
指向一个文件,在这种情况下它是一个可写流