如何调试 Node.js 应用程序?
-
19-09-2019 - |
题
如何调试 Node.js 服务器应用程序?
现在我主要使用 警报调试 打印语句如下:
sys.puts(sys.inspect(someVariable));
一定有更好的调试方法。我知道 谷歌浏览器 有一个命令行调试器。这个调试器也适用于 Node.js 吗?
解决方案 3
这 V8 调试器作为 Google 的一部分发布 Chrome 开发者工具 可用于调试 Node.js 脚本。有关其工作原理的详细说明可以在 Node.js GitHub 维基.
其他提示
节点检查可以保存一天!从任何浏览器支持的WebSocket 使用它。断点,探查,livecoding,等...它是真正真棒。
用安装它:
npm install -g node-inspector
然后运行:
node-debug app.js
调试
分析
node --prof ./app.js
node --prof-process ./the-generated-log-file
堆转储
火焰图
- 0x
- jam3/开发工具 然后 Chrome 开发者工具火焰图
- 跟踪 和 堆栈可视化 — 仅在 SmartOS 上受支持
- 诊所
追踪
记录
输出调试信息的库
增强堆栈跟踪信息的库
标杆管理
其他
遗产
这些曾经可以工作,但不再维护或不再适用于现代节点版本。
- https://github.com/bnoordhuis/node-profiler - 替换为内置调试
- https://github.com/c4milo/node-webkit-agent - 由节点检查器取代
- https://nodetime.com/ - 已不复存在
Visual Studio代码 的将是我的选择进行调试。安装任何工具或npm install
的东西没有任何开销。
刚刚成立的的package.json您的应用程序的出发点和VSCode会自动创建您的解决方案中的配置文件。它是建立在电子,其上比如Atom编辑构建的。
VS代码会因为你可能有类似的调试经验 有在其他IDE等VS时,Eclipse等
我个人使用 JetBrains WebStorm 因为它是我发现的唯一一个对于前端和后端 JavaScript 都非常有用的 JavaScript IDE。
它可以在多个操作系统上运行,并且内置 Node.js 调试(以及大量其他东西](http://www.jetbrains.com/webstorm/features/index.html).
我唯一的“问题”/愿望清单项目 是 是:
Mac 上似乎比 Windows 上更需要资源在版本 6 中似乎不再是问题。如果它有片段支持(就像 崇高文本2 - IE。输入“fun”并点击“tab”以输入函数。请参阅下面的 @WickyNilliams 评论 - 使用实时模板,您还可以获得片段支持。
这里有很多很好的答案,但我想添加我的观点(基于我的方法的演变)
调试日志
让我们面对现实吧,我们都喜欢美好的事物 console.log('Uh oh, if you reached here, you better run.')
有时这效果很好,所以如果你不愿意离它太远,至少在你的日志中添加一些闪亮的东西 Visionmedia的调试.
交互式调试
尽管控制台日志记录非常方便,但要进行专业调试,您需要卷起袖子并投入其中。设置断点,单步执行代码,检查范围和变量以查看导致奇怪行为的原因。正如其他人提到的, 节点检查器 真的是蜂膝。它可以完成您可以使用内置调试器执行的所有操作,但使用熟悉的 Chrome DevTools 界面。如果你像我一样使用 网络风暴, , 然后 这里 是一个方便的调试指南。
堆栈跟踪
默认情况下,我们无法跟踪事件循环的不同周期(滴答)中的一系列操作。要解决这个问题,请看一下 长约翰 (但不在生产中!)。
内存泄漏
使用 Node.js,我们可以让服务器进程保持相当长的时间。如果您认为出现了一些令人讨厌的泄密事件,您会怎么做?使用 堆转储 和 Chrome DevTools 来比较一些快照并查看发生了什么变化。
对于一些有用的文章,请查看
如果您想观看视频
- Netflix JS 讲座 - 在生产中调试 Node.js
- 有趣的视频 从 寻人工作组 关于跟踪和调试 Node.js
- 关于节点检查器的 15 分钟内容非常丰富的视频
无论您选择什么路径,只要确保您了解如何调试即可
这是一件痛苦的事
看看自己的烦恼就知道
你自己而没有其他人成功了索福克勒斯、阿贾克斯
的Node.js的Visual Studio 2012或2013包括调试工具。 “为Visual Studio包含用于调试节点的应用程序的完整支持Node.js的工具。”概述这里状态。作为新的Node.js,但有在.NET的背景下,我发现这个在添加要调试的Node.js应用的好方法。
Visual Studio代码已经很不错Node.js的调试支持。它是免费的,开源和跨平台运行在Linux,OS X和Windows。
您甚至可以调试呻吟,一饮而尽任务,如果您需要...
我写了一个不同的方法来调试Node.js的代码,其是稳定的并且是非常简单的。它可在 https://github.com/sa/iron-node
这是开源跨平台视觉调试器。
安装:
npm install iron-node -g;
调试:
iron-node yourscript.js;
如果您使用的原子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()
Visual Studio代码能为我们在调试工作。
我整理了一个短篇 Node.js 调试入门 关于使用 节点检查器 对于那些不确定从哪里开始的人。
使用Webstorm!这是完美的调试Node.js的应用。它有一个内置的调试器。 的https:此处退房文档// WWW .jetbrains.com /帮助/ webstorm / 2016.1 /运行和调试节点-js.html
如果您需要Node.js的一个强大的日志库,示踪https://github.com/baryon/tracer 是一个更好的选择。
它输出日志消息与时间戳,文件名,方法名,行号,路径,或调用栈,支持颜色控制台,并支持数据库,文件,流传输容易。我是作家。
假设你有你的计算机上安装节点检查(如果没有,只需键入“故宫安装-g节点检查”),你只需要运行:
node-inspector & node --debug-brk scriptFileName.js
和从命令行粘贴URI成WebKit的(铬/ Safari浏览器)浏览器。
只是为了完整性:
开始与您节点处理 - 检查强>标志
node --inspect index.js
和然后在铬打开chrome://inspect
。点击“打开专用DevTools为节点”链接或安装这个一>铬扩展容易打开铬DevTools。
有关的详细信息请参阅此链路
有新的开源 结节食 项目(作为 Eclipse 插件或 埃尼德工作室):
Nodeclipse 成为 #1 Eclipse 2013 年 10 大新插件. 。它使用修改后的 V8 调试器(来自 Google Chrome Developer Tools for Java)。
Nodeclipse 是免费的开源软件 每个月初发布.
的IntelliJ 获得Node.js的奇妙的作品。
此外,支持的IntelliJ '代码帮助' 以及
使用此命令
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
一个快速和肮脏的方式来调试与您最喜爱的浏览器调试小的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 骨节病>和中提琴:调试浏览器
NDB是Node.js的一种改进的调试经验,由铬DevTools启用