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

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

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

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

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


#1楼

我个人使用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评论-使用实时模板,您还将获得摘要支持。

#2楼

假设您已在计算机上安装了节点检查器(如果没有,只需键入“ npm install -g节点检查器”),则只需运行:

node-inspector & node --debug-brk scriptFileName.js

并将URI从命令行粘贴到WebKit(Chrome / Safari)浏览器中。


#3楼

调试

  • Joyent的指南
  • 调试器
  • 节点检查器
  • Visual Studio程式码
  • 云9
  • 括号

剖析

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

堆转储

  • Chrome开发人员工具进行node-heapdump

火焰图

  • 0x
  • jam3 / devtool然后是Chrome开发人员工具火焰图
  • Dtrace和StackVis — 仅在SmartOS上受支持
  • 诊所

追踪

  • 使用TraceGL的交互式堆栈跟踪

记录中

输出调试信息的库

  • 毛虫
  • 示踪剂
  • 涂鸦

增强堆栈跟踪信息的库

  • 龙约翰

标杆管理

  • Apache Bench : ab -n 100000 -c 1 http://127.0.0.1:9778/
  • wrk

其他

  • 跟踪
  • 优势
  • 布格
  • Google追踪框架
  • Paul Irish的指南

遗产

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

  • https://github.com/bnoordhuis/node-profiler-由内置调试代替
  • https://github.com/c4milo/node-webkit-agent-由节点检查器取代
  • https://nodetime.com/-已停用

#4楼

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


#5楼

对于那些不确定从哪里开始的人,我整理了一个简短的Node.js调试入门,介绍了如何使用node-inspector 。


#6楼

有一个新的开源Nodeclipse项目(作为Eclipse插件或Enide Studio ):

Nodeclipse在Eclipse 2013十大新插件中排名第一。 它使用了经过修改的V8调试器(来自Google Chrome开发者工具Java)。

Nodeclipse是每个月初发布的免费开源软件。


#7楼

仅出于完整性考虑:

PyCharm 3.0 + Node.js插件提供了很棒的开发+运行+调试体验 。


#8楼

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


#9楼

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


#10楼

我创建了一个名为pry.js的简洁小工具,可以为您提供帮助。

在代码中的某个位置放置一个简单的语句,正常运行脚本,节点将暂停当前线程,使您可以访问所有变量和函数。 随意查看/编辑/删除它们!

pry = require('pryjs')

class FizzBuzz

  run: ->
    for i in [1..100]
      output = ''
      eval(pry.it) # magic
      output += "Fizz" if i % 3 is 0
      output += "Buzz" if i % 5 is 0
      console.log output || i

  bar: ->
    10

fizz = new FizzBuzz()
fizz.run()

#11楼

如果您使用的是Atom IDE ,则可以安装node-debugger软件包。


#12楼

使用您喜欢的浏览器调试器调试小型Node.js脚本的快捷方法是使用browserify 。 请注意,这种方法不适用于需要本机I / O库的任何应用程序,但是对于大多数小型脚本而言,它已经足够了。

$ npm install -g browserify

现在将您所有的var x = requires('x')调用移至requires.js文件并运行:

$ browserify requires.js -s window -o bundle.js

(这里的缺点是,你要么必须移动或发表意见requires在您的所有文件。)

像这样在HTML文件中包含bundle.js


现在,将文件加载到浏览器中,然后按F12键和中提琴:在浏览器中调试。


#13楼

我编写了另一种方法来调试Node.js代码,该方法稳定且极其简单。 可从https://github.com/sa/iron-node获得 。

开源的跨平台可视调试器。

安装:

npm install iron-node -g;

调试:

iron-node yourscript.js;


#14楼

IntelliJ对于Node.js的工作非常出色。

此外,IntelliJ还很好地支持“代码协助”。


#15楼

Visual Studio Code具有非常好的Node.js调试支持。 它是免费,开放源代码和跨平台的,可在Linux,OS X和Windows上运行。

如果需要,您甚至可以调试grunt和gulp任务 。


#16楼

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

调试日志

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

交互式调试

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

堆栈痕迹

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

内存泄漏

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


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

  • RisingStack-调试Node.js应用程序
  • nearForm的David Mark Clements的优秀文章

如果您想观看视频,则

  • Netflix JS会谈-在生产中调试Node.js
  • 跟踪工作组关于跟踪和调试node.js的有趣视频
  • 在节点检查器上提供非常丰富的15分钟视频

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

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

Sophocles,阿贾克斯


#17楼

从8.1版开始 , NetBeans IDE就已经支持Node.js了:

<...>

新功能亮点

Node.js应用程序开发

  • 新的Node.js项目向导
  • 新的Node.js Express向导
  • 增强的JavaScript编辑器
  • 对运行Node.js应用程序的新支持
  • 调试Node.js应用程序的新支持。

<...>

其他参考:

  1. NetBeans维基/ NewAndNoteworthyNB81 。
  2. NetBeans IDE中的Node.js Express应用,Geertjan-Oracle 。

#18楼

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

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


#19楼

使用Webstorm! 非常适合调试Node.js应用程序。 它具有内置的调试器。 在此处查看文档: https : //www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html


#20楼

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

通过以下方式安装:

npm install -g node-inspector

然后运行:

node-debug app.js

#21楼

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

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

node --inspect server.js

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


#22楼

有很多可能性...

  • 节点包括调试实用程序
  • 节点检查器
  • 代码编辑器/ IDE(请参阅调试说明以了解以下内容之一)
    • 原子
    • VSCode
    • 网络风暴
    • 和更多

调试支持通常使用v8调试协议或更新的Chrome调试协议来实现 。


#23楼

Visual Studio Code将在调试中为我们工作。


#24楼

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

node debug script.js

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


#25楼

使用--inspect标志启动节点进程。

node --inspect index.js

然后在chrome中打开chrome://inspect 。 点击“打开用于节点的专用DevTools”链接或安装此 chrome扩展程序,以轻松打开chrome DevTools。

有关更多信息,请参考此链接


#26楼

使用此命令

DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect

#27楼

使用Chrome版本67.0.3396.62(+)

  1. 运行节点应用

节点--inspect-brk = 0.0.0.0:9229 server.js(服务器js文件名)

  1. 在chrome中浏览您的应用,例如“ localhost:port”
  2. 打开DevTools。
  3. 单击响应设备图标旁边的节点图标。

将会弹出另一个DevTools窗口,专门用于调试节点应用程序。


#28楼

Node.js中有内置的命令行调试器客户端 。 Cloud 9 IDE也具有相当不错的(可视) 调试器 。


#29楼

ndb是由Chrome DevTools支持的Node.js改进的调试体验

https://github.com/GoogleChromeLabs/ndb


#30楼

如果您需要功能强大的Node.js日志记录库,那么Tracer https://github.com/baryon/tracer是一个更好的选择。

它输出带有时间戳,文件名,方法名,行号,路径或调用堆栈的日志消息,支持颜色控制台,并轻松支持数据库,文件,流传输。 我是作者。

你可能感兴趣的:(javascript,node.js,debugging)