Express 4的节点检查器

时间:2014-05-22 04:39:27

标签: node.js debugging express node-inspector

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

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

2 个答案:

答案 0 :(得分:24)

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

  

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

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

总结:

  • node-debug bin/www启动调试模式下的应用和同一过程中的node-inspector
  • 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 Web服务器node-inspector。确保看到正常输出并且没有错误。
  • 现在连接到正确的URL,可能类似于http://localhost:8080/debug?port=5858(除非你的流浪的IP /端口不同)
  • 如果您到达那里并解决了您在此过程中发现的任何意外错误,那么事情确实应该有效,但如果没有发布有关此EADDRINUSE错误的详细信息,请参阅。这是你的应用程序本身的例外吗?如果是这样,您的快速应用程序的陈旧实例是否已经在您的流浪主机中的其他位置运行,从而绑定在您的应用程序的Web服务器端口上?

答案 1 :(得分:0)

同样的过程适用于主管。