如何退出用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 是一种让过程优雅完结的信号。这种信号从过程管理者收回,比方新贵或主管等等。