69

我正在尝试使用节点检查器调试我的 nodejs 应用程序。但谷歌浏览器不显示代码。

我正在使用以下内容,

Node.js:v0.10.26

快递:4.0.0

节点检查器:v0.7.3

谷歌浏览器版本: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
$

然后启动谷歌浏览器并转到

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

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

注意到我没有得到“Express server listener on port 3000”

根据节点检查器尝试了所有无法连接到节点但没有运气

无法弄清楚我错过了什么。如果你有任何建议,我会很高兴......所以我可以在 Google Chrome 中调试我的 Node.js 应用程序。

4

6 回答 6

122

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

这是我放在一起的动画 gif,显示了节点检查器的完整安装和运行。

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

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

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

我希望这会有所帮助!

于 2014-04-28T16:04:11.270 回答
22

默认情况下,节点检查器会尝试在启动调试窗口之前预加载所有代码。我有实例,节点检查器只是因为这个预加载而永远挂起。幸运的是,较新的版本可以选择停止预加载,从而使检查器加载速度更快。

尝试node-inspector --no-preload

于 2015-04-15T22:53:51.620 回答
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 - 了解更多信息

于 2016-09-15T14:33:02.293 回答
1

--debug-brk现在已弃用

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

于 2018-07-13T09:29:55.910 回答
0

在此处输入图像描述

在节点检查器的左侧,“源”选项卡,有“一个带有三角形的框” - 突出显示“显示导航器”。(见上图)。打开它以找到您要调试的文件,并在尚未运行的代码上放置一个断点。

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

于 2014-04-28T16:02:02.170 回答
0

node-debug --no-preload app.js

这对我有用。据此:_

我的脚本运行速度太快,无法附加调试器。

调试的进程必须以--debug-brk 启动,这样脚本在第一行暂停。

注意:node-debug 默认为你添加了这个选项。

于 2017-11-28T08:16:50.603 回答