Chrome Devtools专用的Node.js检查器不会在断点处停止

Gov*_*Rai 7 node.js google-chrome-devtools

关于此问题,有一些较旧的帖子,但是从2013年和2014年提出的问题来看,那里的答案对我的情况没有帮助。

我将debugger关键字放置在文件中的多个位置,甚至在检查器UI中添加了手动断点。尽管如此,执行文件不会在任何断点处停止。我正在使用节点9.2.0和chrome 64.0.3282.167。

这是我的devtools外观的图片。在此处输入图片说明

Dan*_*ett 7

自从10.13到LTS并从8升级到10以来,这个问题一直困扰着我。

直到我在堆栈溢出处看到此问题之前,我无法找到有关此问题的任何信息,这是我能够找到更多有关该问题并找到原因和解决方案所需的催化剂。

您可以在这里找到更多信息:https : //github.com/nodejs/node/issues/23693

原因: 基本上是由于对Node中的调试器协议进行了更改。

解决方案:将 Chrome升级到支持协议更改的71或更高版本。

更好的解决方案:安装NIM:https : //chrome.google.com/webstore/detail/nodejs-v8-inspector-manag/gnhhdgbaldcilmgcpfddgdbkhjohddkj,然后转到NIM设置,并将选定的DevTools版本从chrome-devtools-更改为一个。 frontend.appspot.com(在此处查看有关此选项的更多信息:https : //june07.com/blog/nim-custom-devtools-url/)


Gov*_*Rai 5

使用--inspect-brk标志代替

我最终在devtools协议github页面上提出了一个问题。

我得到了立即答复。基本上,因为我使用该--inspect标志来启动Node.js调试器,所以在调试器进程连接到DevTools服务器之前,我的JavaScript已在执行。因此,断点信息将传递得太晚,并且不会触发任何断点。

例: node --inspect-brk myscript.js

他们目前正在尝试改进此用例。这是实际的答复:

我们在这里致力于改善工作流程,但目前--inspect-brk只是其中一种方法。使用--inspect-brk节点等待DevTools前端连接。连接时,DevTools将发送所有断点信息,并在节点中开始执行JavaScript。使用--inspect节点可启动JavaScript执行,而无需等待DevTools前端。一旦连接DevTools,我们就将相同的断点信息发送到节点,但是由于已经执行了一些JavaScript,这可能为时已晚。

截至2018年4月6日,Node.js文档在这种微妙之处上还不是很清楚。我将针对他们的回购提交PR,以更新文档。顺便说一句,如果您不知道,即使没有V8集成,内置调试器也非常强大。在docs中探索调试实用程序的所有可能性。

  • 试过这个,但对我不起作用。我之前只使用过--inspect,并且只在代码中注入了debugger;我可能会遇到断点。改成--inspect-brk并不能解决。 (2认同)
  • 这不是正确的答案。--inspect-brk将在应用程序入口点成功暂停应用程序,但不能通过GUI在代码中其他位置设置断点来解决问题。 (2认同)