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

问题描述 投票:1489回答:35

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

现在我主要使用这样的打印语句进行警报调试:

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

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

javascript node.js debugging google-chrome-devtools
35个回答
1235
投票

node-inspector可以拯救这一天!在任何支持WebSocket的浏览器中使用它。断点,分析器,实时编码等......真的很棒。

安装它:

npm install -g node-inspector

然后运行:

node-debug app.js

24
投票

Node.js Tools for Visual Studio 2012或2013包含一个调试器。 here概述“用于Visual Studio的Node.js工具包括对调试节点应用程序的完全支持。”作为Node.js的新手,但有.NET背景,我发现这是一个调试Node.js应用程序的好方法。


22
投票

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

你甚至可以调试grunt and gulp tasks,如果你需要...


21
投票

我写了一个不同的方法来调试Node.js代码,这个代码很稳定且非常简单。它可以在https://github.com/s-a/iron-node上找到。

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

安装:

npm install iron-node -g;

调试:

iron-node yourscript.js;


14
投票

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


11
投票

我创建了一个名为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
投票

使用Chrome版本67.0.3396.62(+)

  1. 运行节点应用

node --inspect-brk = 0.0.0.0:9229 server.js(server js filename)

  1. 在Chrome中浏览您的应用,例如“本地主机:端口”
  2. 打开DevTools。
  3. 单击响应设备图标旁边的节点图标。

enter image description here

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

enter image description here


10
投票

Node.js中有内置的命令行debugger client。 Cloud 9 IDE也非常好(视觉)debugger


10
投票

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


9
投票

我为了那些不知道从哪里开始的人使用Node.js debugging primer放了一个短的node-inspector


7
投票

如果你需要一个强大的Node.js日志库,Tracer https://github.com/baryon/tracer是一个更好的选择。

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


711
投票

调试

剖析

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

Heapdumps

Flamegraphs

追踪

记录

输出调试信息的库

增强堆栈跟踪信息的库

标杆

其他

遗产

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


7
投票

假设您的计算机上安装了node-inspector(如果没有,只需键入'npm install -g node-inspector'),您只需运行:

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

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



7
投票

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


6
投票

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

node --inspect index.js

然后在chrome中打开chrome://inspect。单击“打开专用的DevTools for Node”链接或安装this chrome扩展以轻松打开chrome DevTools。

有关更多信息,请参阅this链接


5
投票

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

http://www.nodeclipse.org/img/Nodeclipse-1-debugging.png

Nodeclipse在Eclipse Top 10 NEW Plugins for 2013成为第一名。它使用经过修改的V8调试器(来自Google Chrome Developer Tools for Java)。

Nodeclipse是免费的开源软件released at the start of every month


4
投票

IntelliJ非常适合Node.js.

此外,IntelliJ还支持“代码帮助”。


4
投票

NetBeans以来,version 8.1 IDE已经支持Node.js:

<...>

New Feature Highlights

Node.js应用程序开发

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

<...>

其他参考:

  1. NetBeans Wiki / NewAndNoteworthyNB81
  2. Node.js Express App in NetBeans IDE, Geertjan-Oracle

4
投票

有很多种可能性......

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


3
投票

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

$ npm install -g browserify

现在将所有var x = requires('x')调用移动到requires.js文件中并运行:

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

(这里的缺点是你必须在所有文件中移动或评论requires。)

bundle.js包含在HTML文件中,如下所示:

<script type="text/javascript" src="bundle.js"></script>

现在在浏览器中加载文件,然后在浏览器中按F12和viola:debug。


3
投票

使用此命令

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

240
投票

作为Google V8的一部分发布的Chrome Developer Tools调试器可用于调试Node.js脚本。有关如何工作的详细说明可以在Node.js GitHub wiki中找到。


2
投票
node-debug -p 8888 scriptFileName.js

173
投票

Node has its own built in GUI debugger as of version 6.3 (using Chrome's DevTools)

Nodes builtin GUI debugger

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

node --inspect server.js

您也可以通过传递--inspect-brk来打破第一行。

要自动打开Chrome窗口,请使用inspect-process模块。

# install inspect-process globally
npm install -g inspect-process

# start the debugger with inspect
inspect script.js

88
投票

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

node debug script.js

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


63
投票

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

VS Code提供了与VS,Eclipse等其他IDE相似的调试体验。

enter image description here enter image description here


56
投票

我个人使用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评论 - 使用实时模板,您还可以获得代码段支持。

39
投票

Theseus是Adobe研究的一个项目,它允许您在他们的开源编辑器Brackets中调试Node.js代码。它有一些有趣的功能,如实时代码覆盖,追溯检查,异步调用树。


36
投票

这里有很多很棒的答案,但我想添加我的观点(基于我的方法是如何演变的)

调试日志

让我们面对现实,我们都喜欢一个很好的console.log('Uh oh, if you reached here, you better run.'),有时候效果很好,所以如果你保持沉默,离它太远,至少可以用Visionmedia's debug为你的原木添加一些金光闪闪。

交互式调试

像控制台日志记录一样方便,为了专业调试,你需要卷起袖子并陷入困境。设置断点,逐步执行代码,检查范围和变量,看看是什么导致了这种奇怪的行为。正如其他人所说,node-inspector真的是蜜蜂膝盖。它可以使用内置调试器完成所有操作,但使用熟悉的Chrome DevTools界面。如果像我一样使用Webstorm,那么here就是一个方便的调试指南。

堆栈痕迹

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

内存泄漏

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


对于一些有用的文章,请查看

如果你想观看视频那么

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

enter image description here

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

索福克勒斯,阿贾克斯

© www.soinside.com 2019 - 2024. All rights reserved.