Express 4的节点检查器

Rya*_*aux 11 debugging node.js express node-inspector

我正在尝试使用Express 4应用程序运行node-inspector - 我在Vagrant框中运行它但是能够在浏览器中查看页面而没有任何问题(我在主机上可以使用vagrant机器上的端口).

我使用npm startnode --debug bin/www启动应用程序,然后启动节点调试器bin/www.我在浏览器中加载了检查器,它命中了第一行的初始断点,但是在页面上执行任何操作以调试会触发断点导致EADDRINUSE(也就是端口正在使用)错误.关于可能导致这种情况的原因,我有点困惑,但是,我很可能使用可以在Express 3而不是4上运行的命令.另外,也许有一些配置我缺少在运行调试器上主机的浏览器,但在流浪盒上运行检查员?

Pet*_*ons 24

更新:我很确定这是你的问题:

node --debug bin/www然后启动node-debugger bin/www.

不要做BOTH那些.这是一个或另一个.他们是做同样事情的两种方式.我更喜欢前一种方式,因为它更简单,无论您是否使用节点检查器,它都可以与节点本身一起使用.

总结一下:

  • node-debug bin/www 在同一过程中以调试模式和节点检查器启动您的应用程序
  • node --debug bin/www以调试模式启动您的应用程序.这应该与单独的终端窗口结合使用,您可以将其node-inspector作为单独的进程运行.我推荐这种方法,但要么应该工作.

这是我的建议,开始对此进行故障排除.尝试使用最简单的命令形式来运行一切:

  • 在您的vagrant主机内的一个ssh会话终端中,直接在前台启动您的应用程序 node --debug ./bin/www
    • v8将尝试绑定到端口5858.您应该看到此消息"调试器侦听端口5858"而不是此消息"无法在端口5858上打开套接字,在重试前等待1000毫秒"
    • 如果您看到"无法在端口5858上打开套接字"消息,则还有另一个进程已在侦听.运行sudo netstat -ntlp以查看它是什么进程,理解它是什么以及它为什么运行,然后杀死它以释放端口kill <pid-you-got-from-netstat>
  • 在vagrant主机内的单独ssh会话终端node-inspector中,在前台启动node-inspector Web服务器.确保您看到正常输出并且没有错误.
  • 现在连接到正确的URL,这可能是类似的http://localhost:8080/debug?port=5858(除非你的流浪的IP /端口不同)
  • 如果你到达那里并解决你在路上看到的任何意外错误,事情确实应该有效,但如果没有发布关于这个EADDRINUSE错误的确切细节,你会看到.这是你的应用程序本身的例外吗?如果是这样,您的快速应用程序的陈旧实例是否已经在您的流浪主机中的其他位置运行,从而绑定在您的应用程序的Web服务器端口上?