Skip to content

Node.js process 模块

process 是操作和控制当前进程的全局 API,挂载在 globalThis 下,无需导入即可使用。

核心 API

process.arch

返回 CPU 架构,与 os.arch() 相同:'x64' 'arm64' 'ia32' 等。

process.cwd()

返回当前工作目录。可配合 path.join() 代替 __dirname(ESM 中常用)。

process.argv

获取命令行参数,返回数组。常用于 CLI 脚手架工具接收参数。

js
// 执行: node index.js --port=3000
process.argv
// ['node路径', '脚本路径', '--port=3000']

process.memoryUsage()

获取当前进程内存使用情况:

js
process.memoryUsage()
// {
//   rss: 30932992,        // 常驻集大小(实际占用的物理内存)
//   heapTotal: 6438912,   // 堆区总大小(V8 分配的总内存)
//   heapUsed: 5678624,    // 已用堆大小
//   external: 423221,     // 外部内存使用量(C/C++ 对象等)
//   arrayBuffers: 17606   // ArrayBuffer 数量
// }

process.exit([code])

强制进程退出,即使有未完成的异步操作。

js
setTimeout(() => console.log('不会被执行'), 5000)
setTimeout(() => process.exit(), 2000)  // 2秒后退出

process.kill(pid)

按进程 ID 杀死进程。

js
process.kill(process.pid)  // 等同于 process.exit()

process.env

读取和设置环境变量。修改只在当前进程生效,进程结束即释放。

js
process.env.NODE_ENV  // 读取
process.env.xxx = 'yyy'  // 设置(当前进程有效)

跨平台环境变量:cross-env

Windows 用 set,POSIX 用 export,不一致。cross-env 解决跨平台问题:

bash
npm install cross-env
json
// package.json
{
  "scripts": {
    "dev": "cross-env NODE_ENV=dev node index.js",
    "prod": "cross-env NODE_ENV=production node index.js"
  }
}

本质就是自动识别平台,Windows 调用 SET NODE_ENV=production,POSIX 调用 export NODE_ENV=production