Node.js process

发布时间:2026/7/7 17:46:48
Node.js process
在 Node.js 中process是一个全局对象无需require即可直接使用它提供了当前 Node.js 进程的运行时信息与控制能力。你列出的这些属性和方法恰好覆盖了进程操作的输入输出、事件监听、环境配置、系统信息和生命周期控制五大核心维度。下面为你分层拆解包含代码示例和深度注意事项1. 标准输入输出流I/O这是进程与终端/用户交互的管道。process.stdin标准输入一个可读流Readable Stream用于接收程序运行时输入的数据如键盘输入。默认状态默认是暂停的paused需要恢复resume()或监听data事件才能读取。示例交互式问答javascriptprocess.stdin.setEncoding(utf-8); process.stdin.on(data, (chunk) { console.log(你输入了: ${chunk.trim()}); // 通常输入一次后退出防止一直监听 process.exit(0); });process.stdout标准输出一个可写流Writable Stream用于打印正常信息。console.log底层就是调用了process.stdout.write。示例process.stdout.write(Hello World\n);process.stderr标准错误一个可写流专门用于输出错误信息。它与stdout分开便于日志重定向例如将错误单独写入错误日志文件。示例process.stderr.write(Fatal Error!);console.error底层调用此方法。2. 进程生命周期与事件监听process.on用于监听进程的内置事件通常在发生异常或退出时进行清理工作如关闭数据库连接。核心事件exit进程即将结束时触发此时不能执行异步操作事件循环已结束。beforeExit事件循环为空时触发如果在此监听中放入新任务进程会继续运行。uncaughtException捕获未被try/catch包裹的异常警告官方不推荐用它恢复进程更建议记录日志后退出防止状态不一致。SIGINT监听 CtrlC 信号。示例进程退出前清理资源javascriptprocess.on(exit, (code) { // 只能执行同步操作 console.log(进程即将退出退出码: ${code}); }); process.on(uncaughtException, (err) { console.error(捕获到未处理的异常:, err); process.exit(1); // 手动退出 });3. 环境与配置信息env与argvprocess.env环境变量返回一个包含用户操作系统环境变量的对象。实战用途区分开发/生产环境如NODE_ENV、读取数据库密码或 API Key避免硬编码在代码中。示例bash# 启动时注入变量 NODE_ENVproduction PORT3000 node app.jsjavascriptconst env process.env.NODE_ENV || development; const port process.env.PORT || 8080; console.log(当前环境: ${env}, 端口: ${port});process.argv命令行参数返回一个数组包含启动 Node.js 进程时的命令行参数。索引解析argv[0]Node.js 的可执行文件路径。argv[1]当前执行的 JavaScript 文件路径。argv[2]及以后用户传入的自定义参数。示例bashnode app.js --name John --age 25javascript// 输出: [/usr/bin/node, /path/app.js, --name, John, --age, 25] console.log(process.argv); // 简单解析通常推荐使用 yargs 或 commander 库 const args process.argv.slice(2);4. 底层系统信息arch与platformprocess.arch返回 Node.js 编译时对应的 CPU 架构。常用值x64、arm64、ia32。用于判断是否要下载特定架构的二进制依赖包。process.platform返回运行时的操作系统平台。常用值linux、win32注意 Windows 是 win32即使 64 位、darwinmacOS。实战示例跨平台兼容处理javascriptif (process.platform win32) { // 执行 Windows 下的批处理命令 console.log(检测到 Windows 系统); } else { // 执行 Unix/Linux 下的 shell 命令 console.log(检测到 Unix 系系统); }5. 进程退出process.exitprocess.exit([code])通知 Node.js 强制终止进程。code默认是0代表成功非0如1代表异常退出。⚠️ 深度警告直接调用process.exit()会立即终止即使还有异步操作如数据库写入、文件关闭未完成。它会粗暴地中断事件循环。优雅退出策略若需要等待异步任务完成应使用process.on(exit)或先关闭资源再调用process.exit。更推荐的方式是让事件循环自然清空进程会自动退出无需显式调用exit。总结速查表属性/方法类型核心用途stdin可读流读取用户输入stdout/stderr可写流打印标准日志 / 错误信息on方法监听进程退出、异常、信号等事件env对象读取系统环境变量配置argv数组获取命令行启动参数arch字符串判断 CPU 架构x64/arm64platform字符串判断操作系统linux/win32/darwinexit方法强制终止进程谨慎使用如果你正在编写 CLI命令行工具工具建议将process.argv和process.env结合使用并利用stdout/stderr输出美化后的命令行界面。如果涉及复杂的进程管理还可以进一步研究child_process模块子进程。