首页 文章

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

提问于
浏览
1441

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

现在我主要使用这样的打印语句进行警报调试:

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

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

30 回答

  • 4

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

  • 9

    IntelliJ非常适合Node.js.

    此外,IntelliJ还支持“代码帮助” .

  • 3

    使用此命令

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

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

  • 8

    使用Chrome版本67.0.3396.62()

    • 运行节点应用

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

    • 在Chrome中浏览您的应用,例如"localhost:port"

    • 打开DevTools .

    • 单击响应设备图标旁边的节点图标 .

    将有另一个DevTools窗口专门用于调试节点应用程序 .

  • 19

    调试

    剖析

    • node --prof ./app.js

    • node --prof-process ./the-generated-log-file

    Heapdumps

    Flamegraphs

    追踪

    记录

    输出调试信息的库

    增强堆栈跟踪信息的库

    基准测试

    其他

    遗产

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

  • 10

    如果你需要一个强大的Node.js日志库,Tracer https://github.com/baryon/tracer是一个更好的选择 .

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

  • 686
    node-debug -p 8888 scriptFileName.js
    
  • 158

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

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

    node --inspect server.js
    

    你也可以通过传递 --inspect-brk 来打破第一行 .

    要自动打开Chrome窗口,请使用inspect-process模块 .

    # install inspect-process globally
    npm install -g inspect-process
    
    # start the debugger with inspect
    inspect script.js
    
  • 33

    使用您最喜欢的 browser 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 . )

    bundle.js 包含在HTML文件中,如下所示:

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

    现在在浏览器中加载文件,然后在浏览器中按F12和viola:debug .

  • 58

    NetBeans IDE自version 8.1以来一直支持Node.js:

    <...>新功能要点Node.js应用程序开发新的Node.js项目向导新的Node.js Express向导增强的JavaScript编辑器对运行Node.js应用程序的新支持对调试Node.js应用程序的新支持 . <...>

    其他参考:

  • 6
  • 4

    有一个新的开源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 .

  • 2

    node-inspector可以节省一天!在任何支持WebSocket的浏览器中使用它 . 断点,分析器,实时编码等......真的很棒 .

    安装它:

    npm install -g node-inspector
    

    然后运行:

    node-debug app.js
    
  • 7

    如果您使用Atom IDE,则可以安装 node-debugger 包 .

  • 86

    我个人使用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你也有片段支持 .

  • 9

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

    node --inspect index.js

    然后在chrome中打开 chrome://inspect . 单击"Open dedicated DevTools for Node"链接或安装this chrome扩展以轻松打开chrome DevTools .

    有关更多信息,请参阅this链接

  • 2

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

    node debug script.js

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

  • 221

    作为Google Chrome Developer Tools的一部分发布的V8调试器可用于调试Node.js脚本 . 有关其工作原理的详细说明,请参见Node.js GitHub wiki .

  • 1204

    Theseus是Adobe研究的一个项目,它允许您在他们的开源编辑器Brackets中调试Node.js代码 . 它有一些有趣的功能,如实时代码覆盖,追溯检查,异步调用树 .

    screenshot

  • 6

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

    如果需要,你甚至可以调试grunt and gulp tasks

  • 53

    我写了一个不同的方法来调试Node.js代码,它是稳定的并且非常简单 . 它位于https://github.com/s-a/iron-node .

    Enter image description here

    一个开源的跨平台可视化调试器 .

    安装:

    npm install iron-node -g;

    调试:

    iron-node yourscript.js;

  • 22

    假设您的计算机上安装了node-inspector(如果没有,只需键入'npm install -g node-inspector'),您只需运行:

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

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

  • 20

    有很多种可能性......

    调试支持通常使用v8 Debugging Protocol或更新的Chrome Debugging Protocol来实现 .

  • 13

    我创建了一个名为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()
    
  • 6

    这里有很多很棒的答案,但我想添加我的观点(基于我的方法是如何演变的)

    调试日志

    让我们面对现实吧,我们都喜欢一个好的 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比较一些快照,看看有什么变化 .


    对于一些有用的文章,请查看

    如果你想观看视频那么

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

    看看自己的麻烦是一件痛苦的事情,并且知道你自己也没有其他人做过索福克勒斯,阿贾克斯

  • 6

    对于那些不确定从哪里开始的人,我整理了一个简短的Node.js debugging primer使用node-inspector .

  • 6

    Node.js中有内置命令行debugger client . Cloud 9 IDE也非常好(可视)debugger .

  • 5

    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应用程序的好方法 .

  • 3

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

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

相关问题