[javascript] 我如何调试Node.js应用程序?



14 Answers

调试

剖析

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

Heapdumps

Flamegraphs

追踪

记录

输出调试信息的库

增强堆栈跟踪信息的库

标杆

其他

遗产

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

Question

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

现在我主要使用如下的打印语句使用警报调试

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

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




使用这个命令

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



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




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






如果你需要一个功能强大的Node.js日志库, Tracer是一个更好的选择。

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




IntelliJ对Node.js有着奇妙的作用。

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







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




我写了一个不同的方法来调试Node.js代码,它非常稳定且非常简单。 它位于https://github.com/s-a/iron-node

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

安装:

npm install iron-node -g;

调试:

iron-node yourscript.js;







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

只需通过检查员标志,您就可以获得检查员的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



我个人使用JetBrains WebStorm,因为它是我发现的唯一适用于前端和后端JavaScript的JavaScript IDE。

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

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

  1. 在Mac上,它似乎比Windows更耗资源 它在版本6中不再是问题。
  2. 如果它具有代码片段支持(如Sublime Text 2的那些支持) - 即键入'fun'并点击'tab'来放入一个函数,那将会很好。 请参阅下面的@WickyNilliams评论 - 使用Live Templates,您也​​可以使用代码片段支持。






node-debug -p 8888 scriptFileName.js



Related