当没有异步的操作在等待处理时,则 Node.js 会以状态码 0
正常地退出。
其他情况下,会用如下的状态码:
1
未捕获的致命异常:有未捕获的异常,并且没被域或 ['uncaughtException'
] 事件句柄处理。2
:未被使用(被 Bash 预留用于内置的误用)。3
内部的 JavaScript 解析错误:Node.js 引导进程内部中的 JavaScript 源代码造成的解析错误。 这是非常少见的, 一般只会在开发 Node.js 本身的时候出现。4
内部的 JavaScript 执行失败:Node.js 引导进程内部中的 JavaScript 源代码在执行时返回函数值失败。 这是非常少见的, 一般只会在开发 Node.js 本身的时候出现。5
致命的错误:在 V8 中有致命的错误。 通常会以FATAL ERROR
为前缀打印消息到 stderr。6
非函数的内部异常句柄:有未捕获的异常,但是内部的致命异常句柄被设置为非函数且不能被调用。7
内部异常句柄运行时失败:有未捕获的异常,且内部的致命异常句柄函数在试图处理异常时本身抛出了错误。 这是可能发生的,比如,['uncaughtException'
] 或者domain.on('error')
句柄抛出错误。8
:未被使用。在之前的 Node.js 版本中,退出码 8 有时候表示未被捕获的异常。9
无效的参数:指定了未知的选项,或者没给必需要的选项提供值。10
内部的 JavaScript 运行时失败:当引导函数被调用时,Node.js 引导进程内部中的 JavaScript 源代码抛出错误。 这是非常少见的, 一般只会在开发 Node.js 本身的时候出现。12
无效的调试参数:--inspect
和/或--inspect-brk
选项已设置,但选择的端口号无效或不可用。13
未完成的顶层等待:await
被用于顶层代码中的函数之外,但是传递的Promise
从未被解决。>128
信号退出:如果 Node.js 接收到致命信号, 比如SIGKILL
或SIGHUP
,则其退出码会是128
加上信号码的值。 这是标准 POSIX 的实践,因为退出码被定义为 7 位整数,并且信号退出设置了高位,然后包含信号码的值。 例如,信号SIGABRT
的值为6
,因此期望的退出码会是128
+6
或134
。