如何在Windows上调试基本的Node.js应用程序(非http)

29
我知道如何使用node-inspector和iisnode调试http应用程序。但是,在Windows上,我可以使用node-inspector调试非http的node应用程序吗?
我尝试过:
 node debug test.js

它的意思是:

debugger listening on port 5858

在Chrome浏览器中打开http://localhost:5858/并没有任何反应。


顺便提一下:运行node debug test.js会启动命令行调试器,可以正常工作。但这与node-inspector完全不同。


你可以尝试一下非常强大的 http://www.jetbrains.com/webstorm/ 调试器。 - saintedlama
7个回答

63

要使用node-inspector,正确的开关是node --debug而不是node debug

以下是详细步骤:

  1. 全局安装node-inspector (npm install -g node-inspector)
  2. 在命令行窗口中运行: node-inspector
  3. 打开Chrome并转到http://localhost:8080/debug?port=5858。你将获得node-inspector UI但没有任何正在运行的应用程序。
  4. 从另一个命令行窗口中,使用--debug开关运行您的应用程序,如下所示:node --debug test.js
  5. 刷新Chrome标签,就这样!

几个有趣的点:

  • 如果你杀掉你的应用程序并重新启动它,只需刷新node-inspector标签即可。它将保留所有断点。
  • 要在第一行自动停止,请使用node --debug-brk test.js启动您的应用程序。

在最新的OSX上使用nodeJS时,似乎“node debug”是正确的选择,“node --debug”则不是。 - Dan Jameson
根据 https://nodejs.org/api/debugger.html,两个版本的区别在于期望 Node 执行的任务不同:--debug 会启动“某个需要被调试的应用程序”,而 debug 则是启动 Node 来“调试某个应用程序”。因此这两者是同一故事的两面。 - Thomas Urban

2

2
它的意思是:调试器正在监听端口5858。
我对此也感到困惑,但由于Node.js文档指出调试器可以通过简单的TCP协议进行访问,并且没有提到HTTP,所以我猜测不会在_http://localhost:5858 上可用。
“V8附带了一个广泛的调试器,可以通过简单的TCP协议在进程外部访问”-http://nodejs.org/api/debugger.html

TCP与HTTP的优点很好。我知道命令行调试器,但我真正想要的是node-inspector的体验。 - Sylvain

1

0

如果你和我一样是Windows的新手,当你全局安装了node-inspector,将其添加到PATH等操作后,仍然出现“node-inspector未被识别”或类似于Windows JScript错误的提示时,那么这篇文章可能会对你有所帮助。

请前往C:\Users\urusername\AppData\Roaming\npm

然后运行node-debug.cmd或node-inspector.cmd

你应该会看到一些神奇的字眼

Node Inspector v0.12.7
Visit http://127.0.0.1:8080/?port=5858 to start debugging.
Debugger listening on port 5858

太棒了。如果你知道更好的解决方案,请告诉我。


0

在OSX 10.8中,Chrome v26似乎无法工作,但是Safari 6使用与上述相同的说明并使用0.0.0.0:8080连接。

丹尼·科茨(Danny Coates)在其他地方发布了另一篇文章,建议按以下顺序执行:

  1. 启动您的Node进程:node --debug(或--debug-brk)my_program.js
  2. 启动Node-inspector:node-inspector
  3. 将浏览器指向0.0.0.0:8080

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接