如何调试Node.js服务器应用程序?

现在,我主要使用带有以下打印语句的警报调试

sys.puts(sys.inspect(someVariable));

必须有更好的调试方法。 我知道Google Chrome浏览器有一个命令行调试器。 该调试器也可用于Node.js吗?


#1楼

我个人使用JetBrains WebStorm,因为它是我发现的唯一一个对前端和后端JavaScript都非常有用的JavaScript IDE。

它可以在多个操作系统上运行,并具有内置的Node.js调试功能(以及大量其他功能)( http://www.jetbrains.com/webstorm/features/index.html )。

我唯一的“问题” /愿望清单项目 分别是

  1. 在Mac上似乎比Windows占用更多的资源 在版本6中似乎不再是问题。
  2. 如果它具有Snippet支持(例如Sublime Text 2的支持),那就太好了,例如,键入“ fun”并点击“ tab”以放入函数。 请参阅下面的@WickyNilliams评论-使用实时模板,您还将获得摘要支持。

#2楼

假设您已在计算机上安装了节点检查器(如果没有,只需键入“ npm install -g节点检查器”),则只需运行:

node-inspector & node --debug-brk scriptFileName.js

并将URI从命令行粘贴到WebKit(Chrome / Safari)浏览器中。


#3楼

调试

  • Joyent的指南
  • 调试器
  • 节点检查器
  • Visual Studio程式码
  • 云9
  • 括号

剖析

  1. node --prof ./app.js
  2. node --prof-process ./the-generated-log-file

堆转储

  • Chrome开发人员工具进行node-heapdump

火焰图

  • 0x
  • jam3 / devtool然后是Chrome开发人员工具火焰图
  • Dtrace和StackVis — 仅在SmartOS上受支持
  • 诊所

追踪

  • 使用TraceGL的交互式堆栈跟踪

记录中

输出调试信息的库

  • 毛虫
  • 示踪剂
  • 涂鸦

增强堆栈跟踪信息的库

  • 龙约翰

标杆管理

  • Apache Bench : ab -n 100000 -c 1 http://127.0.0.1:9778/
  • wrk

其他

  • 跟踪
  • 优势
  • 布格
  • Google追踪框架
  • Paul Irish的指南

遗产

这些用于工作,但不再维护或不再适用于现代节点版本。

  • https://github.com/bnoordhuis/node-profiler-由内置调试代替
  • https://github.com/c4milo/node-webkit-agent-由节点检查器取代
  • https://nodetime.com/-已停用

#4楼

us修斯是Adobe研究的一个项目,它使您可以在其开源编辑器Brackets中调试Node.js代码。 它具有一些有趣的功能,例如实时代码覆盖,追溯检查,异步调用树。


#5楼

对于那些不确定从哪里开始的人,我整理了一个简短的Node.js调试入门,介绍了如何使用node-inspector 。


#6楼

有一个新的开源Nodeclipse项目(作为Eclipse插件或Enide Studio ):

Nodeclipse在Eclipse 2013十大新插件中排名第一。 它使用了经过修改的V8调试器(来自Google Chrome开发者工具Java)。

Nodeclipse是每个月初发布的免费开源软件。


#7楼

仅出于完整性考虑:

PyCharm 3.0 + Node.js插件提供了很棒的开发+运行+调试体验 。


#8楼

适用于Visual Studio 2012或2013的Node.js工具包含调试器。 这里的概述指出“用于Visual Studio的Node.js工具包括对调试节点应用程序的完整支持。”。 作为Node.js的新手,但在.NET中有背景,我发现此插件是调试Node.js应用程序的好方法。


#9楼

作为Google Chrome开发者工具的一部分发布的V8调试器可用于调试Node.js脚本。 有关如何工作的详细说明,请参见Node.js GitHub Wiki 。


#10楼

我创建了一个名为pry.js的简洁小工具,可以为您提供帮助。

在代码中的某个位置放置一个简单的语句,正常运行脚本,节点将暂停当前线程,使您可以访问所有变量和函数。 随意查看/编辑/删除它们!

pry = require('pryjs')class FizzBuzzrun: ->for i in [1..100]output = ''eval(pry.it) # magicoutput += "Fizz" if i % 3 is 0output += "Buzz" if i % 5 is 0console.log output || ibar: ->10fizz = new FizzBuzz()
fizz.run()

#11楼

如果您使用的是Atom IDE ,则可以安装node-debugger软件包。


#12楼

使用您喜欢的浏览器调试器调试小型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

<script type="text/javascript" src="bundle.js"></script>

现在,将文件加载到浏览器中,然后按F12键和中提琴:在浏览器中调试。


#13楼

我编写了另一种方法来调试Node.js代码,该方法稳定且极其简单。 可从https://github.com/sa/iron-node获得 。

开源的跨平台可视调试器。

安装:

npm install iron-node -g;

调试:

iron-node yourscript.js;


#14楼

IntelliJ对于Node.js的工作非常出色。

此外,IntelliJ还很好地支持“代码协助”。


#15楼

Visual Studio Code具有非常好的Node.js调试支持。 它是免费,开放源代码和跨平台的,可在Linux,OS X和Windows上运行。

如果需要,您甚至可以调试grunt和gulp任务 。


#16楼

这里有很多不错的答案,但是我想补充一下我的观点(根据我的方法如何发展)

调试日志

面对现实,我们都喜欢一个好的console.log('Uh oh, if you reached here, you better run.')有时效果很好,所以如果您不愿离开它太远,至少可以添加使用Visionmedia的debug为您的日志锦上添花 。

交互式调试

与控制台日志记录一样方便,要进行专业的调试,您需要袖手旁观并陷入困境。设置断点,单步执行代码,检查范围和变量,以查看导致异常行为的原因。 正如其他人提到的那样, 节点检查器实际上就是蜜蜂的膝盖。 它使用内置的调试器可以完成您可以做的所有事情,但是使用熟悉的Chrome DevTools界面。 如果像我一样使用Webstorm ,那么这里是从此处进行调试的便捷指南。

堆栈痕迹

默认情况下,我们无法跟踪事件循环(刻度)不同周期中的一系列操作。 要解决这个问题,请看看longjohn (但不在生产中!)。

内存泄漏

使用Node.js,我们可以使服务器进程保持相当长的时间。 如果您认为它冒出了一些令人讨厌的漏洞,该怎么办? 使用heapdump和Chrome DevTools比较一些快照,看看有什么变化。


有关一些有用的文章,请查看

  • RisingStack-调试Node.js应用程序
  • nearForm的David Mark Clements的优秀文章

如果您想观看视频,则

  • Netflix JS会谈-在生产中调试Node.js
  • 跟踪工作组关于跟踪和调试node.js的有趣视频
  • 在节点检查器上提供非常丰富的15分钟视频

无论选择哪种方式,只要确保您了解调试方式即可

这是一件痛苦的事
看自己的麻烦并知道
你自己,没有别人做到

Sophocles,阿贾克斯


#17楼

从8.1版开始 , NetBeans IDE就已经支持Node.js了:

<...>

新功能亮点

Node.js应用程序开发

  • 新的Node.js项目向导
  • 新的Node.js Express向导
  • 增强的JavaScript编辑器
  • 对运行Node.js应用程序的新支持
  • 调试Node.js应用程序的新支持。

<...>

其他参考:

  1. NetBeans维基/ NewAndNoteworthyNB81 。
  2. NetBeans IDE中的Node.js Express应用,Geertjan-Oracle 。

#18楼

我会选择Visual Studio Code进行调试。 没有安装任何工具或npm install东西的开销。 只需在package.json中设置应用程序的起点,VSCode就会在您的解决方案内部自动创建配置文件。 它建立在Electron之上,像Atom这样的编辑器也建立在Electron上。

VS Code提供了与其他IDE(例如VS,Eclipse等)类似的调试体验。


#19楼

使用Webstorm! 非常适合调试Node.js应用程序。 它具有内置的调试器。 在此处查看文档: https : //www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html


#20楼

节点检查器可以节省一天! 从支持WebSocket的任何浏览器中使用它。 断点,事件探查器,实时编码等,这真的很棒。

通过以下方式安装:

npm install -g node-inspector

然后运行:

node-debug app.js

#21楼

从6.3版开始,Node拥有自己的内置 GUI调试器(使用Chrome的DevTools)

只需传递检查器标志,您将获得指向检查器的URL:

node --inspect server.js

您也可以通过传递--inspect-brk代替第一行。


#22楼

有很多可能性...

  • 节点包括调试实用程序
  • 节点检查器
  • 代码编辑器/ IDE(请参阅调试说明以了解以下内容之一)
    • 原子
    • VSCode
    • 网络风暴
    • 和更多

调试支持通常使用v8调试协议或更新的Chrome调试协议来实现 。


#23楼

Visual Studio Code将在调试中为我们工作。


#24楼

Node.js版本0.3.4+具有内置调试支持。

node debug script.js

手册: http : //nodejs.org/api/debugger.html


#25楼

使用--inspect标志启动节点进程。

node --inspect index.js

然后在chrome中打开chrome://inspect 。 点击“打开用于节点的专用DevTools”链接或安装此 chrome扩展程序,以轻松打开chrome DevTools。

有关更多信息,请参考此链接


#26楼

使用此命令

DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect

#27楼

使用Chrome版本67.0.3396.62(+)

  1. 运行节点应用

节点--inspect-brk = 0.0.0.0:9229 server.js(服务器js文件名)

  1. 在chrome中浏览您的应用,例如“ localhost:port”
  2. 打开DevTools。
  3. 单击响应设备图标旁边的节点图标。

将会弹出另一个DevTools窗口,专门用于调试节点应用程序。


#28楼

Node.js中有内置的命令行调试器客户端 。 Cloud 9 IDE也具有相当不错的(可视) 调试器 。


#29楼

ndb是由Chrome DevTools支持的Node.js改进的调试体验

https://github.com/GoogleChromeLabs/ndb


#30楼

如果您需要功能强大的Node.js日志记录库,那么Tracer https://github.com/baryon/tracer是一个更好的选择。

它输出带有时间戳,文件名,方法名,行号,路径或调用堆栈的日志消息,支持颜色控制台,并轻松支持数据库,文件,流传输。 我是作者。

如何调试Node.js应用程序?相关推荐

  1. 在 Chrome 开发者工具中调试 node.js

    命令行工具 devtool ,它可以在 Chrome 的开发者工具中运行 Node.js 程序. 下面的记录显示了在一个 HTTP 服务器中设置断点的情况. 该工具基于 Electron 将 Node ...

  2. 942.ava.com_如何使用Ava.js测试Node.js应用程序

    942.ava.com by Nitish Phanse 由Nitish Phanse 如何使用Ava.js测试Node.js应用程序 (How you can test your Node.js a ...

  3. 构建node.js基础镜像_在Android上构建Node.js应用程序

    构建node.js基础镜像 by Aurélien Giraud 通过AurélienGiraud 在Android上构建Node.js应用程序-第1部分:Termux,Vim和Node.js (Bu ...

  4. 开发笔记13 | 部署 Node.js 应用程序到云 ECS

    <<系列文章集 前言 在之前的一篇文章中,我们介绍了 如何将一个本地的 Java 应用程序直接部署到阿里云 ECS ,有不少读者反馈,在本文中,我们来介绍如何部署 Node.js 应用程序 ...

  5. node.js ejs_如何在Node.js应用程序中使用EJS模板

    node.js ejs by Jennifer Bland 詹妮弗·布兰德(Jennifer Bland) 如何在Node.js应用程序中使用EJS模板 (How to use EJS Templat ...

  6. 如何在Docker上构建Node.js应用程序

    Docker has been the latest trending topic over the past couple of years and if you haven't been to s ...

  7. package.json在Node JS应用程序中的重要性

    Before starting Node JS applications development, we should learn some basics and importance of pack ...

  8. rethinkdb_如何在Node.js应用程序中使用RethinkDB

    rethinkdb 这篇文章是由同行评审Agbonghama柯林斯和马丁·马丁内斯 . 感谢所有SitePoint的同行评审员使SitePoint内容达到最佳状态! Web应用程序最常见的任务之一就是 ...

  9. 如何在Node.js应用程序中使用RethinkDB

    这篇文章是由同行评审Agbonghama柯林斯和马丁·马丁内斯 . 感谢所有SitePoint的同行评审人员使SitePoint内容达到最佳状态! Web应用程序最常见的任务之一就是保存数据. 没有存 ...

最新文章

  1. 熟悉mysql基本数据库操作系统_MySQL数据库的基本操作
  2. 安卓逆向_22( 二 ) --- Xposed 学习记录
  3. python双目视觉三维重建代码_双目立体视觉的三维重建方法与流程
  4. 讨论生活中什么样东西可以何种变量描述找出生活中顺序执行事情用c语言,《C语言程序设计》实验指导书...
  5. 动态规划:leetcode 416 分割等和子集(背包问题应用)
  6. 硬盘安装Debian
  7. 动态代理和静态代理的区别_动态代理与静态代理
  8. DSP28335看门狗复位
  9. android添加本地视频播放器,找到令人满意的Android本地视频播放器是如此困难吗?...
  10. GRBL分析:gcode解释器(二)
  11. 电子元器件检测与维修从入门到精通视频教程
  12. sge中的windows选项
  13. 被说了很多遍的设计模式---外观模式
  14. 社交网络中的Link Prediction
  15. ACM简单题——不能被3整除的数
  16. 互联网大佬为什么爱唱歌
  17. 基于51单片机的智能超声波四轮遥控小车proteus仿真
  18. mathtype安装过程中如何填写信息
  19. 20160127.CCPP体系详解(0006天)
  20. PHP实现统计下游浏览量

热门文章

  1. 微信小程序问题解决方案
  2. php session 过期,php session失效的原因
  3. SwiftUI 发展现状和学习指南
  4. (0069)iOS开发之dequeueReusableCellWithIdentifier的两个方法的区别
  5. (0005) iOS 开发之WebViewJavascriptBridge的升级问题
  6. PHP标记风格,编码规范
  7. cookie存值和page分页
  8. 用SERVLET进行用户名和密码验证
  9. [ Luogu 3924 ] 康纳的线段树
  10. JavaWeb--MVC案例1-------(4)删除