<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Justino Contingo </title>
    <description>The latest articles on DEV Community by Justino Contingo  (@justino_contingo).</description>
    <link>https://dev.to/justino_contingo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3956158%2F1b16696b-b5cd-453f-8132-10a1e5e9d6a0.png</url>
      <title>DEV Community: Justino Contingo </title>
      <link>https://dev.to/justino_contingo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/justino_contingo"/>
    <language>en</language>
    <item>
      <title>Debugging Node.js? console.log isn't enough anymore</title>
      <dc:creator>Justino Contingo </dc:creator>
      <pubDate>Thu, 28 May 2026 10:17:30 +0000</pubDate>
      <link>https://dev.to/justino_contingo/debugging-nodejs-consolelog-isnt-enough-anymore-1o6p</link>
      <guid>https://dev.to/justino_contingo/debugging-nodejs-consolelog-isnt-enough-anymore-1o6p</guid>
      <description>&lt;p&gt;We've all been there.&lt;/p&gt;

&lt;p&gt;Deeply nested objects. Circular references. Repeated structures.&lt;/p&gt;

&lt;p&gt;At some point, you stop debugging and start trying to understand what you're even looking at.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;DumpKit&lt;/strong&gt; — a small debugging tool inspired by Laravel's &lt;code&gt;dump()&lt;/code&gt; and &lt;code&gt;dd()&lt;/code&gt;, designed for Node.js.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;dump&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dumpkit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;complexObject&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It handles common debugging pain points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safe handling of circular references&lt;/li&gt;
&lt;li&gt;Support for shared references&lt;/li&gt;
&lt;li&gt;Large and deeply nested structures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also inspect data in different formats:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;view&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tree&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;   &lt;span class="c1"&gt;// hierarchical view&lt;/span&gt;
&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;view&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;table&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;  &lt;span class="c1"&gt;// structured collections&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another useful feature is &lt;strong&gt;dump and pause (dp)&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;dp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Execution pauses until you press ENTER&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes it easier to inspect application state at critical points in execution.&lt;/p&gt;

&lt;p&gt;DumpKit also exposes a structured internal representation (&lt;code&gt;AnalysisNode&lt;/code&gt;), which can be used to build custom debugging tools on top of it.&lt;/p&gt;

&lt;p&gt;DumpKit doesn't replace the console.&lt;/p&gt;

&lt;p&gt;It simply gives you more clarity when complexity grows beyond simple logs.&lt;/p&gt;

&lt;p&gt;Debugging isn't just about finding bugs — it's about understanding structure.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Justino-code/dumpkit" rel="noopener noreferrer"&gt;https://github.com/Justino-code/dumpkit&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>debug</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
