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-envjson
// 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。