code
{integer} 退出码。默认值:0
。
process.exit()
方法以退出状态 code
指示 Node.js 同步地终止进程。
如果省略 code
,则使用成功代码 0
或 process.exitCode
的值(如果已设置)退出。
在所有的 ['exit'
] 事件监听器被调用之前,Node.js 不会终止。
使用失败代码退出:
process.exit(1);
执行 Node.js 的 shell 可以看到退出码为 1
。
调用 process.exit()
会强制进程尽快退出,即使还有尚未完全完成的异步操作在等待,包括对 process.stdout
和 process.stderr
的 I/O 操作。
在大多数情况下,实际上不需要显式地调用 process.exit()
。
如果事件循环中没有待处理的额外工作,则 Node.js 进程会自行退出。
process.exitCode
属性可以设置来告诉进程使用什么退出码(当进程正常退出时)。
例如,以下示例描述了 process.exit()
方法的错误用法,这可能会导致打印到 stdout 的数据被截断和丢失:
// 这是一个错误用法的示例:
if (someConditionNotMet()) {
printUsageToStdout();
process.exit(1);
}
这个问题的原因是因为 Node.js 中的 process.stdout
的写入有时是异步的,并且可能发生在 Node.js 事件循环的多个时间点。
但是,调用 process.exit()
会强制进程退出(在这些额外的 stdout
写入操作被执行之前)。
代码不应直接调用 process.exit()
,而应设置 process.exitCode
并允许进程自然地退出(避免为事件循环调度任何额外的工作):
// 如何正确地设置退出码,同时让进程正常地退出。
if (someConditionNotMet()) {
printUsageToStdout();
process.exitCode = 1;
}
如果由于错误条件而需要终止 Node.js 进程,则抛出未捕获的错误并允许进程相应地终止,这比调用 process.exit()
更安全。
在 [Worker
] 线程中,此函数会停止当前线程(而不是当前进程)。