当前位置: 首页 > 面试题库 >

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

汪弘盛
2023-03-14
问题内容

我有以下代码从终端捕获^ 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

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

完整的代码在这里。


问题答案:

似乎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)


 类似资料:
  • 在chrome中调试时,即使没有设置断点,脚本也总是在调试器中暂停,如果暂停未暂停,它会再次暂停自己。 能做些什么呢?

  • 我的程序需要允许用户输入员工姓名和年度总销售额。当用户完成将员工添加到阵列中时,程序应确定哪些员工的销售额最高,哪些员工的销售量最低。然后,它应该打印出两个数字之间的差异。 在我下面的代码中,我有一个保存用户输入的年销售额的totalPay类(它包括以前赋值中的其他变量和方法,这里没有使用)。salesPerson类保存雇员的姓名和totalPay对象,其中包括他们的年销售额。(我意识到这太复杂了

  • 在以前版本的Visual Studio(或者我几年前设置的一些设置)中,当我停止调试Web应用程序时,实际的IIS Express实例将继续运行。我真的很喜欢这种行为,因为这意味着当我编辑代码/重新编译ect时,站点总是在运行以进行修补。 自从升级到VS 2013后,这种情况似乎不再发生,当我停止调试时,它也停止了IIS express应用程序池。 有没有人知道某处有没有改变这种行为的设定?

  • 作者注:这个错误的许多问题鼓励我张贴这个问题,以供将来参考。 相关问题: 使用node_env=production的spawn函数 node.js child_process.spawn ENOENT error-仅在supervisord 生成ENOENT Node.js错误 https://stackoverflow.com/questions/27603713/nodejs-spawn-e

  • 问题内容: 我从节点7 开始就熟悉使用该选项。现在在节点8上,它不起作用。今天,我要求节点照常使用检查器: 它回应如下: 如果我尝试打开该链接,Chrome会说: 在此之前,它曾经是一个“ chrome-devtools://”链接,该链接非常出色。 是什么赋予了? 到处搜索,我找不到与此链接有关的任何内容。 问题答案: 有来自nodejs文档的信息 选项1:在基于Chromium的浏览器中打开。