我如何debuggingNode.js应用程序?
如何debuggingNode.js服务器应用程序?
现在我主要使用打印语句来进行警报debugging ,如下所示:
sys.puts(sys.inspect(someVariable));
必须有更好的debugging方法。 我知道Google Chrome有一个命令行debugging器。 这个debugging器是否也可用于Node.js?
节点检查员可以节省一天! 从任何支持WebSocket的浏览器使用它。 断点,分析器,活代码等…这真是太棒了。
安装它:
npm install -g node-inspector
然后运行:
node-debug app.js
debugging
- Joyent的指南
- debugging器
- 节点检查器
- Visual Studio代码
- 云9
- 括号
剖析
-
node --prof ./app.js
-
node --prof-process ./the-generated-log-file
Heapdumps
- 使用Chrome开发人员工具的node-heapdump
Flamegraphs
- 0X
- jam3 / devtool然后Chrome开发者工具火焰图表
- Dtrace和StackVis – 仅在SmartOS上受支持
追踪
- 使用TraceGL交互式堆栈跟踪
logging
输出debugging信息的库
- 毛虫
- 曳光弹
增强堆栈跟踪信息的库
- Longjohn
标杆
- Apache Bench :
ab -n 100000 -c 1 http://127.0.0.1:9778/
- WRK
其他
- 跟踪
- 华帝
- 开溜
- Google追踪框架
- 保罗爱尔兰的指南
遗产
这些用于工作,但不再维护或不再适用于现代节点版本。
- https://github.com/bnoordhuis/node-profiler – 由内置的debugging取代
- https://github.com/c4milo/node-webkit-agent – 由节点检查员取代
- https://nodetime.com/ – 停止
作为Google Chrome Developer Tools一部分发布的V8debugging器可用于debuggingNode.js脚本。 在Node.js GitHub wiki中可以find关于如何工作的详细解释。
还有一个用Node.js自己写的命令行debugging器ndb 。
Node自己有6.3版本的GUIdebugging器(使用Chrome的DevTools)
只要通过检查员标志,你就会得到一个检查员的URL:
node --inspect server.js
您也可以通过传递--inspect-brk
来打破第一行。
要自动打开Chrome窗口,请使用检查处理模块。
# install inspect-process globally npm install -g inspect-process # start the debugger with inspect inspect script.js
Node.js版本0.3.4+具有内置的debugging支持。
node debug script.js
手册: http : //nodejs.org/api/debugger.html
我个人使用JetBrains WebStorm,因为它是我发现的唯一的JavaScript IDE,对于前端和后端JavaScript都是非常好的。
它适用于多个操作系统,并有Node.jsdebugging内置(以及其他许多东西)( http://www.jetbrains.com/webstorm/features/index.html )。
我唯一的“问题”/愿望清单项目 是 是 :
在Mac上,这似乎比Windows更耗资源它在版本6中不再是一个问题。如果它有Snippet支持(比如Sublime Text 2的那些支持),也就是input'fun',然后点击'tab'来放入一个函数。请参阅下面的@WickyNilliams评论 – 使用实时模板,您也有片段支持。
Visual Studio代码将是我的selectdebugging。 没有安装任何工具或npm install
东西的开销。 只需在package.json中设置应用程序的起点,VSCode就会自动在您的解决scheme中创build一个configuration文件。 它build立在Electron上,像Atom这样的编辑器就是在这个基础上构build的。
VS Code提供了类似于VS,Eclipse等其他IDE中的debugging体验
Theseus是Adobe研究的一个项目,它可以让你在他们的开源编辑器中debugging你的Node.js代码。 它具有一些有趣的function,如实时代码覆盖,追溯检查,asynchronous调用树。
这里有很多很好的答案,但我想补充一下我的观点(根据我的方法演变而来)
debugging日志
让我们面对现实,我们都喜欢一个好的console.log('Uh oh, if you reached here, you better run.')
,有时候效果很好,所以如果你不愿离开它太远,至less添加Visionmedia的一些debuggingfunction可以让您的日志更加stream畅 。
交互式debugging
像控制台日志logging一样方便,要专业debugging,你需要卷起袖子并卡住。设置断点,遍历你的代码,检查范围和variables,看看是什么造成了怪异的行为。 正如其他人所说, 节点检查员真的是蜜蜂。 它可以使用内置的debugging器完成所有工作,但使用熟悉的Chrome DevTools界面。 如果像我一样使用Webstorm ,那么这里有一个方便的指导来从那里进行debugging。
堆栈跟踪
默认情况下,我们不能跟踪事件循环的不同周期(ticks)的一系列操作。 为了解决这个问题,看看longjohn (但不是在制作!)。
内存泄漏
通过Node.js,我们可以让服务器进程保持相当长的时间。 如果你认为它出现了一些令人讨厌的泄漏,你会怎么做? 使用heapdump和Chrome DevTools来比较一些快照,看看有什么变化。
对于一些有用的文章,退房
- RisingStack – debuggingNode.js应用程序
- 由nearForm的David Mark Clements撰写的优秀文章
如果你喜欢看video,那么
- Netflix JS会谈 – 在生产环境中debuggingNode.js
- 来自跟踪工作组的 有趣的video ,用于跟踪和debuggingnode.js
- 真正的信息15分钟video节点检查
无论你select什么path,只要确保你了解你如何debugging
这是一件痛苦的事情
看看你自己的麻烦,知道
你自己和别人都没有做到这一点索福克勒斯,阿贾克斯
适用于Visual Studio 2012或2013的Node.js工具包含一个debugging器。 此处的概述指出:“用于Visual Studio的Node.js工具包括对debugging节点应用程序的全面支持。” 作为Node.js的新手,但是在.NET中有一个背景,我发现这是一个debuggingNode.js应用程序的好方法。
Visual Studio Code有非常好的Node.jsdebugging支持。 它是免费的,开源的和跨平台的,可以在Linux,OS X和Windows上运行。
你甚至可以debugging咕噜和吞咽任务 ,如果你需要…
我写了一个不同的方法来debuggingNode.js代码,它是稳定的,非常简单。 它可以在https://github.com/sa/iron-node获得; 。
一个开源的跨平台可视化debugging器。
安装:
npm install iron-node -g;
debugging:
iron-node yourscript.js;
如果您正在使用Atom IDE ,则可以安装node-debugger
软件包。
我创build了一个名为pry.js的小工具,可以帮助你。
在你的代码的某处放一个简单的语句,正常运行你的脚本,节点将暂停当前线程,让你访问所有的variables和函数。 查看/编辑/删除他们的意愿!
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进行了简短的debugging 。
Node.js中内置了命令行debugging器客户端 。 云9 IDE也有相当不错的(可视) debugging器 。
如果你需要一个function强大的Node.js日志库, Tracer https://github.com/baryon/tracer是一个更好的select。;
它输出日志信息,包括时间戳,文件名,方法名称,行号,path或调用堆栈,支持颜色控制台,并支持数据库,文件,stream传输。 我是作者。
假设您的计算机上安装了节点检查器(如果没有,只需input“npm install -g node-inspector”),您只需运行:
node-inspector & node --debug-brk scriptFileName.js
并将命令行中的URI粘贴到WebKit(Chrome / Safari)浏览器中。
只是为了完整:
PyCharm 3.0 + Node.js插件提供了一个非常棒的开发+运行+debugging体验 。
有新的开源的Nodeclipse项目(作为Eclipse插件或Enide Studio ):
http://www.nodeclipse.org/img/Nodeclipse-1-debugging.png
Nodeclipse在2013年的Eclipse Top 10新插件中成为第一名。 它使用了一个经过修改的V8debugging器(来自Google Chrome Developer Tools for Java)。
Nodeclipse是每个月初发布的免费开源软件。
使用Webstorm! 它非常适合debuggingNode.js应用程序。 它有一个内置的debugging器。 看看这里的文档: https : //www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
IntelliJ对于Node.js来说非常有效
另外,IntelliJ支持“Code Assistance”。
使用您最喜欢的浏览器debugging器来debugging小型Node.js脚本的一种快捷方式是使用browserify 。 请注意,这种方法不适用于任何需要本地I / O库的应用程序,但对于大多数小型脚本来说已经足够了。
$ npm install -g browserify
现在将所有的var x = requires('x')
调用移动到一个requires.js
文件中并运行:
$ browserify requires.js -s window -o bundle.js
(这里的缺点是你必须移动或注释所有文件中的需求。)
将bundle.js
包含在HTML文件中,如下所示:
<script type="text/javascript" src="bundle.js"></script>
现在在浏览器中加载文件,然后按F12和中提示:在浏览器中debugging。
NetBeans IDE从版本8.1开始支持Node.js:
<…>
新function亮点
Node.js应用程序开发
- 新的Node.js项目向导
- 新的Node.js快速向导
- 增强的JavaScript编辑器
- 运行Node.js应用程序的新支持
- debuggingNode.js应用程序的新支持。
<…>
其他参考:
- NetBeans Wiki / NewAndNoteworthyNB81 。
- NetBeans IDE中的Node.js Express App,Geertjan-Oracle 。
有很多可能性…
- 节点包含一个debugging工具
- 节点检查
- 代码编辑器/ IDE(请参阅以下其中一个的debugging说明)
- primefaces ,
- VSCode
- Webstorm
- 和更多
debugging支持通常使用v8debugging协议或更新版本的Chromedebugging协议来实现 。
node-debug -p 8888 scriptFileName.js
我会用沃尔玛实验室的GOOD 。 它会做这个工作,而且非常灵活:
var hapi = require('hapi'); var good = require('good'); var server = hapi.createServer('localhost', 5000,{}); server.route({SOME ROUTE HERE}); server.start(); var options = { subscribers: { 'console': ['ops', 'request', 'log', 'error'], 'http://localhost/logs': ['log'] } }; server.pack.require('good', options, function (err) { if (!err) { console.log('Plugin loaded successfully'); } });
Visual Studio代码将在我们的debugging工作。
- Chrome DevTools设备在插入时不会检测到设备
- 是否可以隐藏Chrome网页检查器networking选项卡中的扩展资源?
- 为什么我的XPath查询(抓取HTML表)只能在Firebug中工作,而不是我正在开发的应用程序?
- 如果Chrome扩展程序未安装或使用隐身模式,则Google Chrome浏览器会投放发件人错误
- 如何通过快捷键清除Chrome控制台?
- jQuery的jquery-1.10.2.min.map触发404(Not Found)
- 如何使用开发人员工具在Chrome中findbutton/元素运行的代码
- 什么时候window.location改变?
- Chrome开发者控制台中的奇怪错误 – 无法加载资源:net :: ERR_CACHE_MISS