如何退出Node.js运行的程序1.控制台退出如果在控制台运行,可以使用ctrl-C来出口。但本小节主要讨论程序化退出。2、程序化退出Node.js的核心模块进程有一个方法可以程序化退出:process.exit()当调用这个方法时,无论是已经发起的网络请求还是文件系统调用,进程都在等待输出时的状态等待状态可以立即终止。process.exit(1)的退出码默认为0,表示成功。不同的退出代码意味着不同的事情。1未捕获的致命异常。2未使用(Bash保留用于内置滥用)。3内部JavaScript解析错误。这个错误很少出现,一般在Node.js开发过程中出现。4内部JavaScript评估错误。这个错误很少出现,一般在Node.js开发过程中出现。5致命错误。这是V8中不可恢复的致命错误,相关信息会打印到stderr,以FATALERROR开头。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服务器:constexpress=require('expresss')constapp=express()app.get('/',(req,res)=>{res.send('嗨!')})app.listen(3000,()=>console.log('服务器准备就绪'));这个程序永远不会结束。如果调用process.exit(),任何当前挂起或正在运行的请求都将被中止。在这种情况下,需要将SIGTERM信号发送到命令并使用进程信号处理程序进行处理:constexpress=require('express')constapp=express()app.get('/',(req,res)=>{res.send('嗨!')})constserver=app.listen(3000,()=>console.log('服务器准备好'))process.on('SIGTERM',()=>{//关闭服务器server.close(()=>{console.log('Processterminated')})})SIGTERM是让进程正常结束的信号。这个信号是从进程管理器发出的,比如upstart或supervisor等。
