如何调试Node.js服务器应用程序?
现在我主要使用这样的打印语句进行警报调试:
sys.puts(sys.inspect(someVariable));
必须有更好的调试方法。我知道Google Chrome有一个命令行调试器。这个调试器也可用于Node.js吗?
node-inspector可以拯救这一天!在任何支持WebSocket的浏览器中使用它。断点,分析器,实时编码等......真的很棒。
安装它:
npm install -g node-inspector
然后运行:
node-debug app.js
Node.js Tools for Visual Studio 2012或2013包含一个调试器。 here概述“用于Visual Studio的Node.js工具包括对调试节点应用程序的完全支持。”作为Node.js的新手,但有.NET背景,我发现这是一个调试Node.js应用程序的好方法。
Visual Studio Code有非常好的Node.js调试支持。它是免费的,开源的和跨平台的,可在Linux,OS X和Windows上运行。
你甚至可以调试grunt and gulp tasks,如果你需要...
我写了一个不同的方法来调试Node.js代码,这个代码很稳定且非常简单。它可以在https://github.com/s-a/iron-node上找到。
一个开源的跨平台可视化调试器。
安装:
npm install iron-node -g;
调试:
iron-node yourscript.js;
如果您使用的是Atom IDE,则可以安装node-debugger
软件包。
我创建了一个名为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中有内置的命令行debugger client。 Cloud 9 IDE也非常好(视觉)debugger。
Visual Studio Code将为我们的调试工作。
我为了那些不知道从哪里开始的人使用Node.js debugging primer放了一个短的node-inspector。
如果你需要一个强大的Node.js日志库,Tracer https://github.com/baryon/tracer是一个更好的选择。
它输出带有时间戳,文件名,方法名,行号,路径或调用堆栈,支持颜色控制台以及支持数据库,文件,流传输的日志消息。我是作者。
node --prof ./app.js
node --prof-process ./the-generated-log-file
输出调试信息的库
增强堆栈跟踪信息的库
ab -n 100000 -c 1 http://127.0.0.1:9778/
这些用于工作但不再维护或不再适用于现代节点版本。
假设您的计算机上安装了node-inspector(如果没有,只需键入'npm install -g node-inspector'),您只需运行:
node-inspector & node --debug-brk scriptFileName.js
并将URI从命令行粘贴到WebKit(Chrome / Safari)浏览器中。
使用Webstorm!它非常适合调试Node.js应用程序。它有一个内置的调试器。看看这里的文档:https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
有一个新的开源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。
IntelliJ非常适合Node.js.
此外,IntelliJ还支持“代码帮助”。
自NetBeans以来,version 8.1 IDE已经支持Node.js:
<...>
New Feature Highlights
Node.js应用程序开发
- 新的Node.js项目向导
- 新的Node.js Express向导
- 增强的JavaScript编辑器
- 对运行Node.js应用程序的新支持
- 调试Node.js应用程序的新支持。
<...>
其他参考:
有很多种可能性......
调试支持通常使用v8 Debugging Protocol或更新的Chrome Debugging Protocol来实现。
使用您喜欢的浏览器调试器调试小型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。
使用此命令
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
作为Google V8的一部分发布的Chrome Developer Tools调试器可用于调试Node.js脚本。有关如何工作的详细说明可以在Node.js GitHub wiki中找到。
node-debug -p 8888 scriptFileName.js
只需传递检查员标志,您将获得检查员的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
Visual Studio Code将是我调试的选择。没有安装任何工具或npm install
东西的开销。只需在package.json中设置应用程序的起点,VSCode将自动在您的解决方案中创建配置文件。它建立在Electron之上,像Atom这样的编辑器就是在这个基础上构建的。
VS Code提供了与VS,Eclipse等其他IDE相似的调试体验。
我个人使用JetBrains WebStorm,因为它是我发现的唯一一个适用于前端和后端JavaScript的JavaScript IDE。
它适用于多个操作系统,内置Node.js调试(以及其他大量内容)(http://www.jetbrains.com/webstorm/features/index.html)。
我唯一的“问题”/愿望清单项目 是 分别为:
这里有很多很棒的答案,但我想添加我的观点(基于我的方法是如何演变的)
让我们面对现实,我们都喜欢一个很好的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比较一些快照,看看有什么变化。
对于一些有用的文章,请查看
如果你想观看视频那么
无论您选择哪种方式,只需确保了解调试方式
这是一件痛苦的事 看看你自己的麻烦并知道 你自己,没有其他人做过
索福克勒斯,阿贾克斯