如何调试Node.js服务器应用程序?
现在我主要使用这样的打印语句进行警报调试:
sys.puts(sys.inspect(someVariable));
必须有更好的调试方法 . 我知道Google Chrome有一个命令行调试器 . 这个调试器也可用于Node.js吗?
如何调试Node.js服务器应用程序?
现在我主要使用这样的打印语句进行警报调试:
sys.puts(sys.inspect(someVariable));
必须有更好的调试方法 . 我知道Google Chrome有一个命令行调试器 . 这个调试器也可用于Node.js吗?
30 回答
使用Webstorm!它非常适合调试Node.js应用程序 . 它有一个内置的调试器 . 看看这里的文档:https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
IntelliJ非常适合Node.js.
此外,IntelliJ还支持“代码帮助” .
使用此命令
Visual Studio Code将在调试中为我们工作 .
使用Chrome版本67.0.3396.62()
在Chrome中浏览您的应用,例如"localhost:port"
打开DevTools .
单击响应设备图标旁边的节点图标 .
将有另一个DevTools窗口专门用于调试节点应用程序 .
调试
Joyent's Guide
Debugger
Node Inspector
Visual Studio Code
Cloud9
Brackets
剖析
node --prof ./app.js
node --prof-process ./the-generated-log-file
Heapdumps
Flamegraphs
0x
jam3/devtool然后Chrome Developer Tools Flame Charts
Dtrace和StackVis - Only supported on SmartOS
追踪
记录
输出调试信息的库
Caterpillar
Tracer
增强堆栈跟踪信息的库
基准测试
Apache Bench:
ab -n 100000 -c 1 http://127.0.0.1:9778/
wrk
其他
Trace
Vantage
Bugger
Google Tracing Framework
Paul Irish's Guide
遗产
这些用于工作但不再维护或不再适用于现代节点版本 .
https://github.com/bnoordhuis/node-profiler - 由内置调试取代
https://github.com/c4milo/node-webkit-agent - 由节点检查器替换
https://nodetime.com/ - 已解散
如果你需要一个强大的Node.js日志库,Tracer https://github.com/baryon/tracer是一个更好的选择 .
它输出带有时间戳,文件名,方法名,行号,路径或调用堆栈,支持颜色控制台以及支持数据库,文件,流传输的日志消息 . 我是作者 .
Node自6.3版开始就有自己内置的GUI调试器(使用Chrome的DevTools)
只需传递检查员标志,您将获得检查员的URL:
你也可以通过传递
--inspect-brk
来打破第一行 .要自动打开Chrome窗口,请使用inspect-process模块 .
使用您最喜欢的 browser debugger 调试小型Node.js脚本的快捷方法是使用 browserify . 请注意,此方法不适用于任何需要本机I / O库的应用程序,但对于大多数小脚本来说它都足够好 .
现在将所有
var x = requires('x')
调用移动到requires.js
文件并运行:(这里的缺点是你必须在所有文件中移动或评论
requires
. )将
bundle.js
包含在HTML文件中,如下所示:现在在浏览器中加载文件,然后在浏览器中按F12和viola:debug .
NetBeans IDE自version 8.1以来一直支持Node.js:
其他参考:
NetBeans Wiki / NewAndNoteworthyNB81 .
Node.js Express App in NetBeans IDE, Geertjan-Oracle .
只是为了完整性:
PyCharm 3.0 + Node.js Plugin offers an awesome development + run + debug experience .
有一个新的开源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 .
node-inspector可以节省一天!在任何支持WebSocket的浏览器中使用它 . 断点,分析器,实时编码等......真的很棒 .
安装它:
然后运行:
如果您使用Atom IDE,则可以安装
node-debugger
包 .我个人使用JetBrains WebStorm,因为它发现了这对于前端和后端JavaScript都很棒 .
它适用于多个操作系统,内置Node.js调试(以及其他大量内容)(http://www.jetbrains.com/webstorm/features/index.html) .
我唯一的'issues' / wishlist项目是 were :
Mac上的资源似乎比Windows更耗资它在版本6中似乎不再是问题 .
如果它具有Snippet支持(如Sublime Text 2的那些 - 即键入'fun'并点击'tab'以放入一个函数,那就太好了 . 请参阅下面的@WickyNilliams评论 - 使用Live Templates你也有片段支持 .
使用 --inspect 标志启动节点进程 .
node --inspect index.js
然后在chrome中打开
chrome://inspect
. 单击"Open dedicated DevTools for Node"链接或安装this chrome扩展以轻松打开chrome DevTools .有关更多信息,请参阅this链接
Node.js版本0.3.4具有内置调试支持 .
node debug script.js
手册:http://nodejs.org/api/debugger.html
作为Google Chrome Developer Tools的一部分发布的V8调试器可用于调试Node.js脚本 . 有关其工作原理的详细说明,请参见Node.js GitHub wiki .
Theseus是Adobe研究的一个项目,它允许您在他们的开源编辑器Brackets中调试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;
假设您的计算机上安装了node-inspector(如果没有,只需键入'npm install -g node-inspector'),您只需运行:
并将URI从命令行粘贴到WebKit(Chrome / Safari)浏览器中 .
有很多种可能性......
node包括debugging utility
node-inspector
代码编辑器/ IDE(请参阅以下某项的调试说明)
Atom,
VSCode
Webstorm
等等
调试支持通常使用v8 Debugging Protocol或更新的Chrome Debugging Protocol来实现 .
我创建了一个名为pry.js的简洁小工具,可以帮助你 .
在代码中的某处放置一个简单的语句,正常运行脚本,节点将暂停当前线程,使您可以访问所有变量和函数 . 随意查看/编辑/删除它们!
这里有很多很棒的答案,但我想添加我的观点(基于我的方法是如何演变的)
调试日志
让我们面对现实吧,我们都喜欢一个好的
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比较一些快照,看看有什么变化 .
对于一些有用的文章,请查看
RisingStack - Debugging Node.js Applications
Excellent article by David Mark Clements of nearForm
如果你想观看视频那么
Netflix JS Talks - Debugging Node.js in Production
Interesting video来自the tracing working group跟踪和调试node.js
Really informative 15-minute video on node-inspector
无论您选择哪种方式,只需确保了解调试方式
对于那些不确定从哪里开始的人,我整理了一个简短的Node.js debugging primer使用node-inspector .
Node.js中有内置命令行debugger client . Cloud 9 IDE也非常好(可视)debugger .
Node.js Tools for Visual Studio 2012或2013包含一个调试器 . 概述here陈述"Node.js Tools for Visual Studio includes complete support for debugging node apps." . 作为Node.js的新手,但有.NET的背景,我发现这个添加是调试Node.js应用程序的好方法 .
Visual Studio Code 将是我调试的选择 . 没有安装任何工具或
npm install
东西的开销 . 只需在package.json中设置应用程序的起点,VSCode将自动在您的解决方案中创建配置文件 . 它 Build 在Electron之上,在其上构建了像Atom这样的编辑器 .