使用Express Framework调试node.js:对缺少的res.end进行故障诊断

时间:2014-08-24 18:37:01

标签: javascript node.js express

我正在开发的Express node.js服务器应用程序有时会进入void并停止返回请求。我非常怀疑其中的某个地方我正在做的事情最终正在跳过我需要做的事情。

有没有人有任何关于如何最好地寻找我错过res.end(假设问题)的提示或技巧?无论如何在节点事件循环中实时查看当前打开的请求?

当事情挂断时,一切仍然在运行,因为Express仍会接受传入的请求。并且,这些请求通过express.logger记录到控制台就好了。但是,请求永远不会返回给客户端,并且不会抛出任何错误。

提前感谢您的想法。

随访:

除了原始API文档之外,节点的调试模式似乎没有太多文档。我确实找到this article,它似乎提供了几个选项的很好的概述。但是,看起来似乎并不是我想要观察事件循环的事情,而是vtop's process list

更多跟进:

昨天,Daniel Hood发表了Debugging in Node.js声明,"调试node.js应用程序的状态总是有点不幸......"所以,也许我的问题并不是那么愚蠢,以至于值得投票。无论如何,在他的下一篇文章中,他承诺将介绍一些调试异步操作的工具。

1 个答案:

答案 0 :(得分:1)

我发布了你提到的最后一篇文章。如果您需要调试异步内容,我将讨论诸如长堆栈跟踪(诸如longjohn之类的模块),try-catch module以及区域/域之类的内容。希望这些链接会有所帮助(可能是在我写第2部分前一周)。

但是,对于您的特定问题,您是否尝试在某个已知位置设置断点并逐步完成此过程?通过这种方式,您可以只看到应用程序的执行方式,也可以找到某些函数在应该返回req / res对象时没有返回的内容。

如果它不是很可重复,可能有些简单的logging会有所帮助。