当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js process.exit([code])用法及代码示例


process.exit([code])

添加于:v0.1.13

参数

process.exit() 方法指示 Node.js 以 code 的退出状态同步终止进程。如果省略code,则退出使用'success' 代码0process.exitCode 的值(如果已设置)。在调用所有 'exit' 事件侦听器之前,Node.js 不会终止。

使用 'failure' 代码退出:

import { exit } from 'node:process';

exit(1);const { exit } = require('node:process');

exit(1);

执行 Node.js 的 shell 应该看到退出代码为 1

调用 process.exit() 将强制进程尽快退出,即使仍有尚未完全完成的异步操作挂起,包括对 process.stdoutprocess.stderr 的 I/O 操作。

在大多数情况下,实际上没有必要显式调用process.exit()。如果事件循环中没有其他待处理的工作,Node.js 进程将自行退出。 process.exitCode 属性可以设置为告诉进程在进程正常退出时使用哪个退出代码。

例如,以下示例说明了 process.exit() 方法的滥用,这可能导致打印到 stdout 的数据被截断和丢失:

import { exit } from 'node:process';

// This is an example of what *not* to do:
if (someConditionNotMet()) {
  printUsageToStdout();
  exit(1);
}const { exit } = require('node:process');

// This is an example of what *not* to do:
if (someConditionNotMet()) {
  printUsageToStdout();
  exit(1);
}

这是有问题的原因是因为在 Node.js 中对 process.stdout 的写入有时是异步的,并且可能发生在 Node.js 事件循环的多个滴答声中。但是,调用 process.exit() 会强制进程在可以执行对 stdout 的额外写入之前退出。

而不是直接调用process.exit(),代码应该设置process.exitCode并通过避免为事件循环安排任何额外的工作来允许进程自然退出:

import process from 'node:process';

// How to properly set the exit code while letting
// the process exit gracefully.
if (someConditionNotMet()) {
  printUsageToStdout();
  process.exitCode = 1;
}const process = require('node:process');

// How to properly set the exit code while letting
// the process exit gracefully.
if (someConditionNotMet()) {
  printUsageToStdout();
  process.exitCode = 1;
}

如果由于错误情况需要终止 Node.js 进程,则抛出未捕获的错误并允许进程相应地终止比调用 process.exit() 更安全。

Worker 线程中,此函数停止当前线程而不是当前进程。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 process.exit([code])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。