我有以下代码从终端捕获^ 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调试器。重新启动应用程序时,出现以下错误:
--inspect
Starting inspector on 127.0.0.1:9229 failed: address already in use
如何正常停止我的应用程序以避免此错误?
完整的代码在这里。
似乎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)