退出代码


【Exit codes】

当没有更多异步操作待处理时,Node.js 通常会以 0 状态码退出。在其他情况下,会使用以下状态码:

【Node.js will normally exit with a 0 status code when no more async operations are pending. The following status codes are used in other cases:】

  • 1 未捕获的致命异常:出现了未捕获的异常, 并且没有被域或 'uncaughtException' 事件处理程序处理。
  • 2:未使用(Bash 保留用于内置命令误用)
  • 3 内部 JavaScript 解析错误:Node.js 引导过程中内部的 JavaScript 源代码导致了解析错误。这种情况极为罕见,通常只会在 Node.js 自身开发过程中发生。
  • 4 内部 JavaScript 评估失败:Node.js 启动过程中的内部 JavaScript 源代码在执行时未能返回函数值。这种情况极为罕见,通常仅在 Node.js 本身开发过程中才可能发生。
  • 5 致命错误:V8 中发生了无法恢复的致命错误。通常会在标准错误输出中打印一条以 FATAL ERROR 为前缀的消息。
  • 6 非函数内部异常处理器:出现了未捕获的异常,但内部致命异常处理器函数被意外设置为非函数,无法调用。
  • 7 内部异常处理程序运行时故障:出现了未捕获的异常,并且内部致命异常处理函数在尝试处理该异常时自身抛出了错误。例如,如果 'uncaughtException'domain.on('error') 处理程序抛出错误,就可能发生这种情况。
  • “8”:未使用。在之前的版本中,Node.js有时会使用出口代码8 表示未接获的例外。
  • 9 无效参数:要么指定了未知选项,要么需要值的选项未提供值。
  • 10 内部 JavaScript 运行时失败:在调用引导函数时,Node.js 引导过程中内部的 JavaScript 源代码抛出了错误。这种情况极其罕见,通常只会在 Node.js 本身的开发过程中发生。
  • 12 无效的调试参数:已设置 --inspect 和/或 --inspect-brk 选项,但所选择的端口号无效或不可用。
  • 13 未完成的顶层 await:在顶层代码中使用了 await,但传入的 Promise 从未解决。
  • 14 快照失败:Node.js 启动时试图构建 V8 启动快照,但由于未满足应用状态的某些要求而失败。
  • >128 信号退出:如果 Node.js 收到致命信号,例如 SIGKILLSIGHUP,那么它的退出码将是 128 加上信号代码的值。这是标准的 POSIX 做法,因为退出码被定义为 7 位整数,信号退出会设置高位,然后包含信号代码的值。例如,信号 SIGABRT 的值为 6,因此预计的退出码将是 128 + 6,即 134