gpt4 book ai didi

node.js - 在 Node.js 退出之前执行清理操作

转载 作者:太空宇宙 更新时间:2023-11-04 01:39:17 28 4
gpt4 key购买 nike

我想告诉 Node.js 始终在退出之前执行某些操作,无论出于何种原因 - Ctrl+C、异常或任何其他原因。

我尝试过这个:

process.on('exit', function (){
console.log('Goodbye!');
});

我启动了该进程,然后杀死了它,但什么也没发生。我再次启动它,按Ctrl+C,但仍然没有发生......

最佳答案

更新:

您可以为“process.on('exit')”注册一个处理程序,并在任何其他情况下(“SIGINT”或未处理的异常)调用“process.exit()”
process.stdin.resume();//so the program will not close instantly

function exitHandler(options, exitCode) {
if (options.cleanup) console.log('clean');
if (exitCode || exitCode === 0) console.log(exitCode);
if (options.exit) process.exit();
}

//do something when app is closing
process.on('exit', exitHandler.bind(null,{cleanup:true}));

//catches ctrl+c event
process.on('SIGINT', exitHandler.bind(null, {exit:true}));

// catches "kill pid" (for example: nodemon restart)
process.on('SIGUSR1', exitHandler.bind(null, {exit:true}));
process.on('SIGUSR2', exitHandler.bind(null, {exit:true}));

//catches uncaught exceptions
process.on('uncaughtException', exitHandler.bind(null, {exit:true}));

只有在处理程序内部调用同步代码时,这才有效,否则它将无限期地调用处理程序

关于node.js - 在 Node.js 退出之前执行清理操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53443318/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com