编辑
2025-09-24
NodeJs
00

目录

什么是 process 对象?
process 对象的属性
process.argv
process.env
process.cwd()
process.exit()
process.memoryUsage()
process.uptime()
process 对象的事件
exit 事件
uncaughtException 事件
SIGINT 事件
总结

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,它提供了用于编写服务器端代码的强大功能。其中,process 对象是 Node.js 中一个非常重要的全局对象,可以让我们与当前的 Node.js 进程进行交互。本文将详尽介绍 process 对象及其各种属性和方法,并通过多个示例来演示其使用。

什么是 process 对象?

process 对象是一个全局对象,它提供了与 Node.js 进程交互的方法和属性。无论在什么地方,您都可以直接使用 process 对象,而无需通过 require 来引入。

process 对象的属性

process.argv

process.argv 是一个数组,包含了启动 Node.js 进程时传递的命令行参数。第一个元素是 node 可执行文件的路径,第二个元素是 JavaScript 文件的路径,其他元素则是命令行传递的参数。

示例:

JavaScript
// demo: main.js console.log(process.argv);

运行:

Bash
node main.js arg1 arg2 arg3

输出:

image.png

process.env

process.env 是一个包含用户环境信息的对象。你可以使用它来获取环境变量,或者设置新的环境变量。

示例:

JavaScript
// demo: main.js console.log('Path:', process.env.PATH); process.env.NEW_VAR = 'HelloWorld'; console.log('NEW_VAR:', process.env.NEW_VAR);

运行:

Bash
node main.js

输出:

image.png

process.cwd()

process.cwd() 方法返回当前工作目录,即运行 Node.js 进程时所在的文件夹。

示例:

JavaScript
// demo: main.js console.log('Current working directory:', process.cwd());

运行:

Bash
node main.js

输出:

image.png

process.exit()

process.exit() 方法以一个给定的退出码终止当前进程。默认的退出码是 0 表示成功,非零的退出码表示失败。

示例:

JavaScript
// demo: main.js console.log('This will be displayed.'); process.exit(1); // Logs the message and then exits with code 1. console.log('This will not be displayed.');

运行:

Bash
node main.js

输出:

image.png

process.memoryUsage()

process.memoryUsage() 方法返回一个对象,描述 Node.js 进程的内存使用情况,包含 rss, heapTotal, heapUsed, 和 external 等属性。

示例:

JavaScript
// demo: main.js const memoryUsage = process.memoryUsage(); console.log('Memory Usage:', memoryUsage);

运行:

Bash
node main.js

输出:

image.png

process.uptime()

process.uptime() 方法返回 Node.js 进程已运行的秒数。

示例:

JavaScript
// demo: main.js setTimeout(() => { console.log('Process uptime:', process.uptime(), 'seconds'); }, 1500);

运行:

Bash
node main.js

输出(大约 1.5 秒后):

Bash
Process uptime: 1.524598 seconds

process 对象的事件

process 对象也是一个事件发射器,可以监听多个事件,如 exit, uncaughtException, SIGTERM 等。

exit 事件

exit 事件在 Node.js 进程即将退出时触发,你可以在这里执行一些清理工作或记录日志。

示例:

JavaScript
// demo: main.js process.on('exit', (code) => { console.log(`About to exit with code: ${code}`); }); console.log('This message will be logged before the process exits.'); process.exit(0);

运行:

Bash
node main.js

输出:

Bash
This message will be logged before the process exits. About to exit with code: 0

uncaughtException 事件

uncaughtException 事件在一个未捕获的错误抛出时触发,这通常用于记录或清理资源,但并不推荐在产品代码中使用,因为它可能在异常处理后无法保证系统继续稳定运行。

示例:

JavaScript
// demo: main.js process.on('uncaughtException', (err) => { console.error('There was an uncaught error:', err); }); nonExistentFunction(); // This will throw an error

运行:

Bash
node main.js

输出:

Bash
There was an uncaught error: ReferenceError: nonExistentFunction is not defined at Object.<anonymous> (D:\myproject\11Test\nodejs-01\main.js:5:3) at Module._compile (node:internal/modules/cjs/loader:1376:14) at Module._extensions..js (node:internal/modules/cjs/loader:1435:10) at Module.load (node:internal/modules/cjs/loader:1207:32) at Module._load (node:internal/modules/cjs/loader:1023:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12) at node:internal/main/run_main_module:28:49

SIGINT 事件

SIGINT 事件在接收到 Ctrl+C 时触发,常用于执行程序终止前的清理工作。

示例:

JavaScript
// demo: main.js process.on('SIGINT', () => { console.log('Received SIGINT. Press Ctrl+D to exit.'); process.exit(); }); console.log('Press Ctrl+C to trigger the SIGINT event.'); setInterval(() => {}, 1000); // Keeps the process alive

运行:

Bash
node main.js

当按 Ctrl+C 时,输出:

Bash
Press Ctrl+C to trigger the SIGINT event. Received SIGINT. Press Ctrl+D to exit.

总结

process 对象是 Node.js 中与操作系统交互的一个关键接口。通过了解和利用 process 对象的各种属性和方法,你可以更高效地编写与系统深入交互的 Node.js 程序。同时,掌握事件监听也能帮助你捕获并处理进程生命周期中的各种关键事件。希望这篇文章帮助你全面了解 process 对象的强大功能。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!