退出码

当所有的异步操作都已经完成时,Node.js 会以 0 状态码正常退出。以下状态码在其他情况下使用:

  • 1 未捕获的致命异常 - 这是一个未捕获的异常,并且它不是由域或一个 'uncaughtException' 事件处理器处理的。

  • 2 未使用(由 Bash 保留用于固有的误用)

  • 3 内置的 JavaScript 解析错误 - 内置的 JavaScript 源代码在 Node.js 的引导过程中导致了解析错误。这是极为罕见的,一般只会在 Node.js 的自身的发展过程中才会发生。

  • 4 内置的 JavaScript 评估失败 - 内置的 JavaScript 源代码在 Node.js 的引导过程的评估失败时,返回一个函数值。这是极为罕见的,一般只会在 Node.js 的自身的发展过程中才会发生。

  • 5 致命错误 - 在 V8 中有一个致命的不可恢复的错误。通常会在 stderr 中打印一条前缀为 FATAL ERROR 的错误。

  • 6 非函数内部的异常处理程序 - 有一个未捕获的异常,但内部致命异常处理函数在某种程度上被设置为一个非函数,并且不能被调用。

  • 7 内部异常处理程序运行时失败 - 有一个未捕获的异常,但在试图处理它内部的致命异常时,处理函数自身抛出一个错误。这是可能发生的,例如,如果一个 process.on('uncaughtException')domain.on('error') 处理程序抛出一个错误。

  • 8 未使用。在 Node.js 的早期版本中,退出码8,有时表示未捕获的异常。

  • 9 无效参数 - 无论是指定了一个未知的选项,还是一个需要值的选项没有提供值。

  • 10 内置的 JavaScript 运行时失败 - 当引导函数被调用时,内置的 JavaScript 源代码在 Node.js 的引导过程中抛出一个错误。这是极为罕见的,一般只会在 Node.js 的自身的发展过程中才会发生。

  • 12 无效的调试参数 - 设置了 --debug 和/或 --debug-brk 选项,但选中了一个无效的端口号。

  • >128 信号退出 - 如果 Node.js 收到了像 SIGKILLSIGHUP 这样的致命信号,那么它的退出码会是 128 以上的信号代码值。这是一个标准的 Unix 的做法,由于退出码被定义为 7位的整数,并将退出码设置为高阶位,然后包含所述信号代码的值。