使用node-inspector调试node.js


69

我正在尝试使用node-inspector调试我的nodejs应用程序。但是Google Chrome不会显示该代码。

我正在使用以下内容,

Node.js:v0.10.26

快递:4.0.0

节点检查器:v0.7.3

Google Chrome版本:34.0.1847.131

这就是我要启动调试器的过程。

$ node-inspector
Node Inspector v0.7.3
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.

在另一个控制台中

$ node --debug app.js 
debugger listening on port 5858
$

然后启动Google Chrome浏览器并转到

http://127.0.0.1:8080/debug?port=5858

它打开了节点检查器,但是没有任何代码。所有窗口都是空的。

注意到我没有收到“ Express服务器在端口3000上侦听”

根据节点检查器全部尝试,无法连接到节点,但没有运气

无法解决我所缺少的。希望您有什么建议。.所以我可以在Google Chrome中调试Node.js应用。


3
1.尝试使用--no-preload选项运行node-inspector。
MiroslavBajtoš2014年

1
2.检查Chrome的DevTools控制台-是否有任何错误?
MiroslavBajtoš2014年

Answers:


122

尝试运行node --debug-brk app.js而不是仅仅运行--debug。在节点检查器挂接到节点进程之前,您的应用程序可能不会暂停。使用--debug-brk将迫使节点在应用程序的第一行中断,并等待调试器附加到该进程。加载节点检查器Web界面是导致节点检查器附加到您的节点进程的原因。这就是为什么在查询字符串(localhost:8080 / debug?port = 5858)中包含节点调试端口的原因。您正在告诉节点检查器它应该伸出并连接到哪个端口。

这是我放在一起的gif动画,展示了Node-inspector的完整安装和运行。

在gif中,我使用该--debug标志是因为我没有调试任何在启动时就可以运行的代码。我在请求处理程序内调试,该处理程序仅在请求页面时才触发。因此,刷新页面会导致节点检查器在该行中断。

不久前,我还整理了一个15分钟的YouTube教程。

http://youtu.be/03qGA-GJXjI

希望对您有所帮助!


1
感谢Alex,我之前确实检查了您的youtube视频。非常感谢。--debug-brk帮了我大忙..但是,当我在一条路线中设置断点时。就我而言,我正在尝试使用cheerio +请求抓取一个网站。我已经创建了一条路线,可以说scrape.js,我希望调试此文件..但未达到断点的位置。.我错过了什么吗?
genwip

我不确定。没有代码示例很难知道。你可以粘贴所有运行直到这个路径声明在该点的代码要点与你导航到触发请求处理URL一起?
CHEV

1
@AlexFord:您如何创建此gif?我认为它真的很酷而且可能会很有帮助
SharpCoder

@SharpCoder我用Camtasia录制了视频。在其高级导出选项中,您可以选择gif动画。
CHEV

1
@SutikshanDubey引用此答案。当你得到第3步确保您使用的node-inspector命令,并没有node-debug命令。该node-debug命令既运行脚本,启动节点检查器服务器。您只想启动服务器,而不是启动脚本。然后,您可以使用该--debug-brk标志分别启动脚本。
2015年

22

默认情况下,node-inspector会尝试在启动调试窗口之前预加载所有代码。我有实例,由于这种预加载,node-inspector永远挂起。幸运的是,较新的版本可以选择停止预加载,从而使检查器加载更快。

尝试 node-inspector --no-preload


很有帮助!当我宁愿立即击中断点时,我也遇到了这个愚蠢的问题。谢谢你的提示!
Chev

6

标准的远程调试在节点6.5中被完全破坏。但是,它被新的内部节点功能替代

$ node --inspect --debug-brk build/server/server.js
Debugger listening on port 9229.
Warning: This is an experimental feature and could change at any time.
To start debugging, open the following URL in Chrome:
    chrome-devtools://devtools/remote/serve_file/@62cd277117e6f8ec53e31b1be58290a6f7ab42ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node
Debugger attached.

看到这里-http://arveknudsen.com/?p=346%3Fpage_id%3D346&print=pdf-了解更多信息


1
你刚刚救了我的一天!不再需要节点检查器。
Steffen Langer

嗯,在我的情况下,它给我一个以“ ws://”开头的URL ...该机器是无头服务器,因此我通过了host:port选项,但仍然无法打开“ ws://” “我的Chrome浏览器本地实例中的网址
Michael

1

--debug-brk 现在已弃用

尝试node --inspect-brk <your starting file name> 然后转到chrome并键入url chrome://inspect并单击Open dedicated DevTools for Node,调试器将启动,不需要node-inspector


0

在此处输入图片说明

在“节点检查器”左侧的“源”选项卡上,有一个“其中带有三角形的框”-突出显示为“显示导航器”。(请参见上图)。打开该目录以查找要调试的文件,然后在尚未运行的代码上设置一个断点。

还要注意,如果要调试在启动节点上运行的代码,则在启动时需要使用该--debug-brk选项。然后,在Node Inspector中,您必须启动该应用程序(F8运行所有程序)。如果要调试所有初始化代码(例如启动Web浏览器),则需要此选项。


谢谢克莱,
debug

0

node-debug --no-preload app.js

这对我有用。Accoriding来

我的脚本运行太快,无法连接调试器。

调试过程必须以--debug-brk开始,这样脚本将在第一行暂停。

注意:node-debug默认为您添加此选项。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.