代码之家  ›  专栏  ›  技术社区  ›  Fabian Jakobs

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

  •  1467
  • Fabian Jakobs  · 技术社区  · 15 年前

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

    现在我主要用 报警调试 打印语句如下:

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

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

    35 回复  |  直到 5 年前
        1
  •  1219
  •   daralthus    9 年前

    node-inspector 可以挽救这一天!从任何支持的浏览器使用它 WebSocket .断点、探查器、LiveCoding等…真是太棒了。

    安装时使用:

    npm install -g node-inspector
    

    然后运行:

    node-debug app.js
    
        2
  •  696
  •   balupton    8 年前

    调试

    仿形

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

    堆堆

    火焰图

    示踪

    登录中

    输出调试信息的库

    增强堆栈跟踪信息的库

    标杆管理

    其他

    遗产

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

        3
  •  230
  •   d4nyll    6 年前

    这个 V8 作为谷歌的一部分发布的调试器 Chrome Developer Tools 可用于调试node.js脚本。有关这项工作的详细说明,请参阅 Node.js GitHub wiki .

        4
  •  165
  •   Alister    7 年前

    节点有自己的 built in 从6.3版起的GUI调试器(使用Chrome的devtools)

    Nodes builtin GUI debugger

    只要传递inspector标志,就会向您提供一个指向inspector的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
    
        5
  •  86
  •   Samuel Katz Jon Skeet    12 年前

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

    node debug script.js

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

        6
  •  59
  •   Shreyas    8 年前

    Visual Studio Code 将是我调试的选择。没有安装任何工具的开销或 npm install 东西。 只要在package.json中设置应用程序的起点,vscode就会在解决方案中自动创建一个配置文件。它是建立在 Electron 像Atom这样的编辑器是在上面构建的。

    VS代码提供了与您可能拥有的类似的调试经验 在其他IDE中有,如vs、eclipse等。

    enter image description here enter image description here

        7
  •  53
  •   Peter Mortensen icecrime    10 年前

    我个人使用 JetBrains WebStorm 因为它是我发现的唯一一个javascript IDE,它对前端和后端的javascript都很好。

    它在多个操作系统上工作,内置node.js调试(以及大量其他东西)。( http://www.jetbrains.com/webstorm/features/index.html )

    我唯一的“问题”/心愿单项目 :

    1. 在Mac上似乎比Windows更需要资源 在版本6中,它不再是一个问题。
    2. 如果它有代码片段支持(比如 Sublime Text 2 -也就是说,键入“fun”并点击“tab”以加入一个函数。 请参阅下面的@wickynilliams评论-通过实时模板,您还可以获得代码片段支持。
        8
  •  37
  •   Sindre Sorhus    11 年前

    Theseus 是Adobe Research的一个项目,它允许您在其开源编辑器中调试node.js代码。 Brackets . 它有一些有趣的特性,如实时代码覆盖、追溯检查、异步调用树。

    screenshot

        9
  •  34
  •   Philip O'Brien Erkan Demirel    7 年前

    这里有很多很好的答案,但我想添加我的观点(基于我的方法的发展)

    除错记录

    面对现实吧,我们都喜欢 console.log('Uh oh, if you reached here, you better run.') 有时效果很好,所以如果你不太愿意远离它,至少在你的日志中添加一些Bling Visionmedia's debug .

    交互式调试

    尽管控制台日志记录很方便,但要专业地进行调试,您需要卷起袖子,陷入困境。设置断点,单步执行代码,检查范围和变量,看看是什么导致了这种奇怪的行为。正如其他人提到的, node-inspector 真的是蜜蜂的膝盖。它可以用内置的调试器做任何事情,但是使用熟悉的chrome devtools接口。 如果你像我一样 网络风暴 然后 here 是从那里调试的方便指南。

    堆栈跟踪

    默认情况下,我们不能在事件循环的不同周期(ticks)中跟踪一系列操作。绕过去看看 longjohn (但不在生产中!).

    内存渗漏体

    使用node.js,我们可以让一个服务器进程在相当长的时间内保持正常运行。如果你认为它造成了一些严重的泄漏,你该怎么办?使用 heapdump 和chrome devtools来比较一些快照,看看有什么变化。


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

    如果你想看视频,那么

    无论您选择什么路径,只要确保您了解如何调试

    enter image description here

    这是一件痛苦的事情
    看看你自己的麻烦,知道
    你自己和别人都没有成功

    索福克勒斯

        10
  •  22
  •   Peter Mortensen icecrime    10 年前

    Node.js Tools for Visual Studio 2012或2013包括一个调试器。概述 here 声明“node.js tools for Visual Studio包含对调试节点应用程序的完整支持”。刚接触node.js,但在.NET中有背景,我发现这个外接程序是调试node.js应用程序的好方法。

        11
  •  20
  •   Peter Mortensen icecrime    9 年前

    Visual Studio Code 有非常好的node.js调试支持。它是免费的、开源的和跨平台的,运行在Linux、OS_X和Windows上。

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

        12
  •  19
  •   Community CDub    8 年前

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

    Enter image description here

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

    安装:

    npm install iron-node -g;

    调试:

    iron-node yourscript.js;

        13
  •  13
  •   Peter Mortensen icecrime    9 年前

    如果您正在使用 Atom IDE ,您可以安装 node-debugger 包裹。

        14
  •  10
  •   BlaineSch    10 年前

    我创造了一个整洁的小工具,叫做 pry.js 那可以帮你。

    在代码中的某个地方放置一个简单的语句,正常运行脚本,node将停止当前线程,使您能够访问所有变量和函数。随意查看/编辑/删除!

    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()
    
        15
  •  10
  •   babidi    6 年前

    使用Chrome版本67.0.3396.62(+)

    1. 运行节点应用程序

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

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

    enter image description here

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

    enter image description here

        16
  •  9
  •   keen    8 年前

    有内置命令行 debugger client 在node.js中。Cloud9IDE也很不错(可视化) debugger .

        17
  •  9
  •   Surendra Babu Parchuru    7 年前

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

        18
  •  8
  •   vhs    11 年前

    我把一个短 Node.js debugging primer 关于使用 node-inspector 对于那些不确定从哪里开始的人。

        19
  •  6
  •   Peter Mortensen icecrime    10 年前

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

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

        20
  •  6
  •   Peter Mortensen icecrime    10 年前

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

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

    并将命令行中的URI粘贴到webkit(chrome/safari)浏览器中。

        22
  •  6
  •   OneMoreQuestion    8 年前

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

        23
  •  6
  •   Rahul Kumar    7 年前

    使用启动节点进程 --检查 旗帜。

    node --inspect index.js

    然后打开 chrome://inspect 在铬合金中。单击“为节点打开专用devtools”链接或安装 this Chrome扩展,方便打开Chrome DevTools。

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

        24
  •  5
  •   Peter Mortensen icecrime    9 年前

    有了新的开放源码 Nodeclipse 项目(作为Eclipse插件或 Enide Studio ):

    http://www.nodeclipse.org/img/Nodeclipse-1-debugging.png

    nodeclipse在 Eclipse Top 10 NEW Plugins for 2013 . 它使用了修改后的 V8 调试器(谷歌浏览器开发工具为Java)。

    nodeclipse是免费的开源软件 released at the start of every month .

        25
  •  4
  •   卢声远 Shengyuan Lu    9 年前

    IntelliJ 非常适合node.js。

    此外,Intellij还支持“代码辅助”。

        26
  •  4
  •   Peter Mortensen icecrime    9 年前

    这个 NetBeans 从那时起,IDE就得到了node.js支持。 version 8.1 :

    <……

    新功能亮点

    node.js应用程序开发

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

    <……

    其他参考:

    1. NetBeans Wiki / NewAndNoteworthyNB81 .
    2. Node.js Express App in NetBeans IDE, Geertjan-Oracle .
        27
  •  4
  •   cmd    8 年前

    有很多可能性…

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

        28
  •  3
  •   Peter Mortensen icecrime    9 年前

    一种快速而肮脏的方法来调试小node.js脚本 浏览器调试器 将使用 褐变 . 请注意,这种方法不适用于任何需要本机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:在浏览器中调试。

        29
  •  2
  •   matt burns    10 年前
    node-debug -p 8888 scriptFileName.js
    
        30
  •  2
  •   Zahirul Haque    6 年前

    使用此命令

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