Node.js process 对象有哪些常用属性和方法?
请列举 Node.js process 全局对象的常用属性(env/argv/cwd/pid/exit 等)和方法。
回答
我是大山
常用属性:
process.env— 环境变量对象(如process.env.NODE_ENV)process.argv— 命令行参数数组(前两个是 node 和脚本路径)process.cwd()— 当前工作目录process.pid— 进程 IDprocess.ppid— 父进程 IDprocess.platform— 操作系统('win32'/'darwin'/'linux')process.arch— CPU 架构('x64'/'arm64')process.title— 进程标题process.memoryUsage()— 内存使用量process.uptime()— 进程运行时间(秒)process.version— Node.js 版本process.versions— 各依赖版本对象
常用方法:
process.exit(code)— 退出进程(0 成功,非 0 失败)process.nextTick(callback)— 将回调插入到下一轮事件循环前执行(优先级高于微任务)process.chdir(dir)— 切换工作目录process.abort()— 立即退出并生成 core 文件process.kill(pid, signal)— 向进程发送信号
事件监听:
process.on('exit', (code) => {
console.log('进程即将退出,状态码:', code);
// 只能执行同步操作
});
process.on('uncaughtException', (err) => {
console.error('未捕获异常:', err);
process.exit(1); // 防止进程停留在不稳定状态
});
process.on('unhandledRejection', (reason) => {
console.error('未处理 Promise 拒绝:', reason);
});
// 监听信号
process.on('SIGINT', () => {
console.log('收到 Ctrl+C');
process.exit(0);
});
注意:process.nextTick 的回调在 event loop 的各个 phase 之间执行,过度递归会使 I/O 饿死。