一尘不染

如何在SIGINT上停止node.js检查器/ Chrome调试器?

node.js

我有以下代码从终端捕获^ C并正常关闭Express应用程序:

process.on('SIGINT', () => {
    console.log('SIGINT received ...');
    console.log('Shutting down the server');

    server.close(() => {
        console.log('Server has been shutdown');
        console.log('Exiting process ...');
        process.exit(0);
    });
});

但是,如果我使用来启动节点实例--inspect,那么上面的代码将无法停止检查器和Chrome调试器。重新启动应用程序时,出现以下错误:

Starting inspector on 127.0.0.1:9229 failed: address already in use

如何正常停止我的应用程序以避免此错误?

完整的代码在这里


阅读 238

收藏
2020-07-07

共1个答案

一尘不染

似乎VSCode,Puppeteer,nodemon,express等导致了此问题,您在后台运行了一个进程,或者只是关闭了调试区域(浏览器,终端等),或者无论如何,都可以在CMD中运行

$ ps ax | grep node

然后

$ killall -9 node

这也不是最好的解决方案,我也建议您使用此端口查找过程,然后发送关闭信号

$ sudo ss -lptn 'sport = :9229'

要么

$ sudo netstat -nlp | grep :9229

要么

$ sudo lsof -n -i :9229 | grep LISTEN

然后:

$ sudo kill <pid>

或只需[将两个步骤合而为一]

$ sudo kill `sudo lsof -t -i:9229`

要么

$ sudo kill $(sudo lsof -t -i:9229)
2020-07-07