CodeWalk

Node.js process 对象有哪些常用属性和方法?

作者:我是大山 · 2026-05-30 12:55

请列举 Node.js process 全局对象的常用属性(env/argv/cwd/pid/exit 等)和方法。

回答

我是大山

常用属性

  • process.env — 环境变量对象(如 process.env.NODE_ENV
  • process.argv — 命令行参数数组(前两个是 node 和脚本路径)
  • process.cwd() — 当前工作目录
  • process.pid — 进程 ID
  • process.ppid — 父进程 ID
  • process.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 饿死。