當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。