如何调试Node.js服务器应用程序?
现在,我主要使用带有以下打印语句的警报调试 :
sys.puts(sys.inspect(someVariable));
必须有更好的调试方法。 我知道Google Chrome浏览器有一个命令行调试器。 该调试器也可用于Node.js吗?
我个人使用JetBrains WebStorm,因为它是我发现的唯一一个对前端和后端JavaScript都非常有用的JavaScript IDE。
它可以在多个操作系统上运行,并具有内置的Node.js调试功能(以及大量其他功能)( http://www.jetbrains.com/webstorm/features/index.html )。
我唯一的“问题” /愿望清单项目 是 分别是 :
假设您已在计算机上安装了节点检查器(如果没有,只需键入“ npm install -g节点检查器”),则只需运行:
node-inspector & node --debug-brk scriptFileName.js
并将URI从命令行粘贴到WebKit(Chrome / Safari)浏览器中。
node --prof ./app.js
node --prof-process ./the-generated-log-file
输出调试信息的库
增强堆栈跟踪信息的库
ab -n 100000 -c 1 http://127.0.0.1:9778/
这些用于工作,但不再维护或不再适用于现代节点版本。
us修斯是Adobe研究的一个项目,它使您可以在其开源编辑器Brackets中调试Node.js代码。 它具有一些有趣的功能,例如实时代码覆盖,追溯检查,异步调用树。
对于那些不确定从哪里开始的人,我整理了一个简短的Node.js调试入门,介绍了如何使用node-inspector 。
有一个新的开源Nodeclipse项目(作为Eclipse插件或Enide Studio ):
Nodeclipse在Eclipse 2013十大新插件中排名第一。 它使用了经过修改的V8调试器(来自Google Chrome开发者工具Java)。
Nodeclipse是每个月初发布的免费开源软件。
仅出于完整性考虑:
PyCharm 3.0 + Node.js插件提供了很棒的开发+运行+调试体验 。
适用于Visual Studio 2012或2013的Node.js工具包含调试器。 这里的概述指出“用于Visual Studio的Node.js工具包括对调试节点应用程序的完整支持。”。 作为Node.js的新手,但在.NET中有背景,我发现此插件是调试Node.js应用程序的好方法。
作为Google Chrome开发者工具的一部分发布的V8调试器可用于调试Node.js脚本。 有关如何工作的详细说明,请参见Node.js GitHub Wiki 。
我创建了一个名为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()
如果您使用的是Atom IDE ,则可以安装node-debugger
软件包。
使用您喜欢的浏览器调试器调试小型Node.js脚本的快捷方法是使用browserify 。 请注意,这种方法不适用于需要本机I / O库的任何应用程序,但是对于大多数小型脚本而言,它已经足够了。
$ npm install -g browserify
现在将您所有的var x = requires('x')
调用移至requires.js
文件并运行:
$ browserify requires.js -s window -o bundle.js
(这里的缺点是,你要么必须移动或发表意见requires
在您的所有文件。)
像这样在HTML文件中包含bundle.js
:
现在,将文件加载到浏览器中,然后按F12键和中提琴:在浏览器中调试。
我编写了另一种方法来调试Node.js代码,该方法稳定且极其简单。 可从https://github.com/sa/iron-node获得 。
开源的跨平台可视调试器。
安装:
npm install iron-node -g;
调试:
iron-node yourscript.js;
IntelliJ对于Node.js的工作非常出色。
此外,IntelliJ还很好地支持“代码协助”。
Visual Studio Code具有非常好的Node.js调试支持。 它是免费,开放源代码和跨平台的,可在Linux,OS X和Windows上运行。
如果需要,您甚至可以调试grunt和gulp任务 。
这里有很多不错的答案,但是我想补充一下我的观点(根据我的方法如何发展)
面对现实,我们都喜欢一个好的console.log('Uh oh, if you reached here, you better run.')
有时效果很好,所以如果您不愿离开它太远,至少可以添加使用Visionmedia的debug为您的日志锦上添花 。
与控制台日志记录一样方便,要进行专业的调试,您需要袖手旁观并陷入困境。设置断点,单步执行代码,检查范围和变量,以查看导致异常行为的原因。 正如其他人提到的那样, 节点检查器实际上就是蜜蜂的膝盖。 它使用内置的调试器可以完成您可以做的所有事情,但是使用熟悉的Chrome DevTools界面。 如果像我一样使用Webstorm ,那么这里是从此处进行调试的便捷指南。
默认情况下,我们无法跟踪事件循环(刻度)不同周期中的一系列操作。 要解决这个问题,请看看longjohn (但不在生产中!)。
使用Node.js,我们可以使服务器进程保持相当长的时间。 如果您认为它冒出了一些令人讨厌的漏洞,该怎么办? 使用heapdump和Chrome DevTools比较一些快照,看看有什么变化。
有关一些有用的文章,请查看
如果您想观看视频,则
无论选择哪种方式,只要确保您了解调试方式即可
这是一件痛苦的事
看自己的麻烦并知道
你自己,没有别人做到Sophocles,阿贾克斯
从8.1版开始 , NetBeans IDE就已经支持Node.js了:
<...>
新功能亮点
Node.js应用程序开发
- 新的Node.js项目向导
- 新的Node.js Express向导
- 增强的JavaScript编辑器
- 对运行Node.js应用程序的新支持
- 调试Node.js应用程序的新支持。
<...>
其他参考:
我会选择Visual Studio Code进行调试。 没有安装任何工具或npm install
东西的开销。 只需在package.json中设置应用程序的起点,VSCode就会在您的解决方案内部自动创建配置文件。 它建立在Electron之上,像Atom这样的编辑器也建立在Electron上。
VS Code提供了与其他IDE(例如VS,Eclipse等)类似的调试体验。
使用Webstorm! 非常适合调试Node.js应用程序。 它具有内置的调试器。 在此处查看文档: https : //www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
节点检查器可以节省一天! 从支持WebSocket的任何浏览器中使用它。 断点,事件探查器,实时编码等,这真的很棒。
通过以下方式安装:
npm install -g node-inspector
然后运行:
node-debug app.js
只需传递检查器标志,您将获得指向检查器的URL:
node --inspect server.js
您也可以通过传递--inspect-brk
代替第一行。
有很多可能性...
调试支持通常使用v8调试协议或更新的Chrome调试协议来实现 。
Visual Studio Code将在调试中为我们工作。
Node.js版本0.3.4+具有内置调试支持。
node debug script.js
手册: http : //nodejs.org/api/debugger.html
使用--inspect标志启动节点进程。
node --inspect index.js
然后在chrome中打开chrome://inspect
。 点击“打开用于节点的专用DevTools”链接或安装此 chrome扩展程序,以轻松打开chrome DevTools。
有关更多信息,请参考此链接
使用此命令
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
使用Chrome版本67.0.3396.62(+)
节点--inspect-brk = 0.0.0.0:9229 server.js(服务器js文件名)
将会弹出另一个DevTools窗口,专门用于调试节点应用程序。
Node.js中有内置的命令行调试器客户端 。 Cloud 9 IDE也具有相当不错的(可视) 调试器 。
ndb是由Chrome DevTools支持的Node.js改进的调试体验
https://github.com/GoogleChromeLabs/ndb
如果您需要功能强大的Node.js日志记录库,那么Tracer https://github.com/baryon/tracer是一个更好的选择。
它输出带有时间戳,文件名,方法名,行号,路径或调用堆栈的日志消息,支持颜色控制台,并轻松支持数据库,文件,流传输。 我是作者。