如何调试 Node.js 应用程序?

如何调试 Node.js 服务器应用程序?

现在,我主要使用带有以下打印语句的警报调试

sys.puts(sys.inspect(someVariable));

必须有更好的调试方法。我知道Google Chrome 浏览器有一个命令行调试器。该调试器也可用于 Node.js 吗?

答案

节点检查器可以节省一天!从支持WebSocket 的任何浏览器中使用它。断点,事件探查器,实时编码等,这真的很棒。

通过以下方式安装:

npm install -g node-inspector

然后运行:

node-debug app.js

调试

剖析

  1. node --prof ./app.js
  2. node --prof-process ./the-generated-log-file

堆转储

火焰图

追踪

记录中

输出调试信息的库

增强堆栈跟踪信息的库

标杆管理

其他

遗产

这些用于工作,但不再维护或不再适用于现代节点版本。

作为 Google Chrome 开发者工具的一部分发布的V8调试器可用于调试 Node.js 脚本。有关如何工作的详细说明,请参见Node.js GitHub Wiki

从 6.3 版开始,Node 拥有自己的内置 GUI 调试器(使用 Chrome 的 DevTools)

节点内置GUI调试器

只需传递检查器标志,您将获得指向检查器的 URL:

node --inspect server.js

您也可以通过传递--inspect-brk代替第一行。

Node.js 版本 0.3.4 + 具有内置调试支持。

node debug script.js

手册: http//nodejs.org/api/debugger.html

我会选择Visual Studio Code进行调试。没有安装任何工具或npm install东西的开销。只需在 package.json 中设置应用程序的起点,VSCode 就会在您的解决方案内部自动创建配置文件。它建立在Electron之上,像 Atom 这样的编辑器也建立在Electron上。

VS Code 提供了与其他 IDE(例如 VS,Eclipse 等)类似的调试体验。

在此处输入图片说明 在此处输入图片说明

我个人使用JetBrains WebStorm,因为它是我发现的唯一一个对前端和后端 JavaScript 都非常有用的 JavaScript IDE。

它可以在多个操作系统上运行,并具有内置的 Node.js 调试功能(以及大量其他功能)( http://www.jetbrains.com/webstorm/features/index.html )。

我唯一的 “问题” / 愿望清单项目 分别是

  1. 在 Mac 上似乎比 Windows 占用更多的资源在版本 6 中似乎不再是问题。
  2. 如果它具有 Snippet 支持(例如Sublime Text 2 的支持),那就太好了,例如,键入 “fun” 并点击 “tab” 以放入函数。 请参阅下面的 @WickyNilliams 评论 - 使用实时模板,您还将获得摘要支持。

us 修斯是 Adobe 研究的一个项目,它使您可以在其开源编辑器Brackets 中调试 Node.js 代码。它具有一些有趣的功能,例如实时代码覆盖,追溯检查,异步调用树。

屏幕截图

这里有很多不错的答案,但是我想补充一下我的观点(根据我的方法如何发展)

调试日志

面对现实,我们都喜欢一个好的console.log('Uh oh, if you reached here, you better run.')有时效果很好,所以如果您不愿离开它太远,至少可以添加使用Visionmedia 的 debug为您的日志锦上添花

交互式调试

与控制台日志记录一样方便,要进行专业的调试,您需要袖手旁观并陷入困境。设置断点,单步执行代码,检查范围和变量,以查看导致异常行为的原因。正如其他人提到的那样, 节点检查器实际上就是蜜蜂的膝盖。它使用内置的调试器可以完成您可以做的所有事情,但是使用熟悉的 Chrome DevTools 界面。如果像我一样使用Webstorm ,那么这里是从此处进行调试的便捷指南。

堆栈痕迹

默认情况下,我们无法跟踪事件循环(刻度)不同周期中的一系列操作。要解决这个问题,请看看longjohn (但不在生产中!)。

内存泄漏

使用 Node.js,我们可以使服务器进程保持相当长的时间。如果您认为它冒出了一些令人讨厌的漏洞,该怎么办?使用heapdump和 Chrome DevTools 比较一些快照,看看有什么变化。


有关一些有用的文章,请查看

如果您想观看视频,则

无论选择哪种方式,只要确保您了解调试方式即可

在此处输入图片说明

这是一件痛苦的事
看自己的麻烦并知道
你自己,没有别人做到

Sophocles,阿贾克斯

适用于 Visual Studio 2012 或 2013 的Node.js 工具包含调试器。 这里的概述指出 “用于 Visual Studio 的 Node.js 工具包括对调试节点应用程序的完整支持。”。作为 Node.js 的新手,但在. NET 中有背景,我发现此插件是调试 Node.js 应用程序的好方法。