node全局对象_process - dkvirus/npm-resource-read GitHub Wiki
process 是 EventEmitter 的实例对象,也有 on 和 emit 方法。
// 监听事件
process.on('some_event', function() {
console.log('some_event 事件触发');
});
// 触发事件
setTimeout(function() {
process.emit('some_event');
}, 3000);
| 属性 | 说明 |
|---|---|
process.platform |
查看系统是 'win32'(windows) 还是 'darwin'(mac) |
process.arch |
查看系统是 x64(64位系统) 还是 x86(32位系统) |
process.pid |
node程序进程号 |
process.getuid() |
当前运行的 process 自身进程号 |
process.title = 'npm' |
属性用于获取或设置当前进程在 ps 命令中显示的进程名字 |
输出命令行参数,返回值是一个数组,第一个值为 node 安装路径,第二个值为命令脚本路径,之后才是传递的参数。
$ npm logo
[ '/Users/dkvirus/.nvm/versions/node/v8.11.3/bin/node',
'/Users/dkvirus/.nvm/versions/node/v8.11.3/bin/npm',
'logo' ]
返回 node 安装路径。
查询或者设置环境变量。
// 查询所有环境变量
console.log(process.env)
// 设置环境变量
process.env.HOME='/Users/dkvirus'
当进程正常结束,或通过process.exit()结束但未传递参数时,此数值标识进程结束的状态码。
nonexistentFunc 方法为定义,运行会报错 undefined,阻断程序继续运行。
nonexistentFunc();
console.log('这里不会运行。');
$ node process.js
/Users/dkvirus/Documents/npm-test/test/process.js:23
nonexistentFunc();
^
ReferenceError: nonexistentFunc is not defined
at Object.<anonymous> (/Users/dkvirus/Documents/npm-test/test/process.js:23:1)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:191:16)
at bootstrap_node.js:612:3
使用 uncaughtException 可以处理未定义的错误。
var fs = require('fs')
process.on('uncaughtException', (err) => {
fs.writeSync(1, `捕获到异常:${err}\n`);
});
setTimeout(() => {
console.log('这里仍然会运行。');
}, 500);
// 故意调用一个不存在的函数,应用会抛出未捕获的异常。
nonexistentFunc();
console.log('这里不会运行。');
$ node process.js
捕获到异常:ReferenceError: nonexistentFunc is not defined
这里仍然会运行。
src > $ node test/index.js。
-
process.cwd()运行目录:/src/; -
__dirname脚本所在目录:/src/test; -
__filename脚本文件绝对路径:/src/test/index.js。
单数形式 version 只能获得 node 版本号,但不是语义化版本号(前面多个v),复数形式可以获得 nodejs 相关的一些东东的版本,符合语义化版本。
process.version
# 'v8.11.3'
process.versions
# { http_parser: '2.8.0',
node: '8.11.3',
v8: '6.2.414.54',
uv: '1.19.1',
zlib: '1.2.11',
ares: '1.10.1-DEV',
modules: '57',
nghttp2: '1.32.0',
napi: '3',
openssl: '1.0.2o',
icu: '60.1',
unicode: '10.0',
cldr: '32.0',
tz: '2017c' }