如何退出用Node.js运行的程序

1.控制台退出

在控制台运行的话,能够应用ctrl-C 退出。然而这一大节次要探讨的是编程式退出。

2.编程式退出

Node.js 的外围模块process有一个办法能够编程式退出:process.exit()

当这个办法被调用的时候,无论是曾经发动的网络申请,文件系统调用,过程期待输入时处于期待状态,都能够被立即终止。

process.exit(1)

退出码默认是0,代表着胜利。不同的退出码代表着不同的意思。

1 没有被捕捉到的致命异样。
2 没有被应用(Bash 保留用于内置误用)。
3 外部JavaScript解析谬误。这个谬误极少产生,个别产生在Node.js的开发过程中.
4 外部JavaScript求值谬误。这个谬误也极少产生,个别产生在Node.js的开发过程中.
5 致命谬误。这是V8中的致命的不可复原的谬误,相干信息会被打印到stderr中,并以FATAL ERROR结尾。
6 非函数外部异样处理程序。存在未捕捉的异样,但外部致命异样处理函数不知何故设置为非函数,无奈调用。
7 外部异样处理程序运行时失败。
8 没有被应用。在老版本的Node.js,8也示意未被捕捉的异样。
9 有效的参数。
10 外部JavaScript脚本运行时失败。
11 有效的调试参数。
12 未实现的顶级期待。
>128 信号退出。如果 Node.js 收到一个致命信号,例如 SIGKILL 或 SIGHUP,那么它的退出代码将是 128 加上信号代码的值。

也能够通过设置process.exitCode属性。

process.exitCode = 1

当程序运行完结的时候,Node.js将会返回设置的这个退出值。
当所有解决实现后,程序将优雅地退出。
很多时候咱们应用 Node.js 启动服务器,比方这个 HTTP 服务器:

const express = require('expresss')const app = express()app.get('/',(req, res)=>{  res.send('Hi!')})app.listen(3000, ()=> console.log('Server is ready'));

这个程序永远不会完结。 如果调用 process.exit(),任何以后挂起或正在运行的申请都将被停止。

在这种状况下,须要向命令发送一个 SIGTERM 信号,并应用过程信号处理程序进行解决:

const express = require('express')const app = express()app.get('/', (req, res)=>{  res.send('Hi!')})const server = app.listen(3000,()=> console.log('Server is ready'))process.on('SIGTERM',()=>{  // close server  server.close(()=>{    console.log('Process terminated')  })})

SIGTERM 是一种让过程优雅完结的信号。这种信号从过程管理者收回,比方新贵或主管等等。