DEV Community

Cover image for Stop only using console.log and use the built-in node debugger

Stop only using console.log and use the built-in node debugger

Tom Holloway 🏕 on August 15, 2020

Fun fact: you don't necessarily have to just use console.log to debug your application, node has a built-in debugger that works with DevTools. Wh...
Collapse
 
leob profile image
leob

I know (and knew) that there is a node.js debugger, but there are still cases where inserting a console.log statement is the quickest and most practical way to know what's going on. So in my opinion the title of your article should rather be "Stop using console.log ONLY" :-)

Collapse
 
nyxtom profile image
Tom Holloway 🏕

Done! Fixed :)

Collapse
 
leob profile image
leob • Edited

Champ! :-)

Collapse
 
leob profile image
leob • Edited

You know what, with PHP I'm ALWAYS using the debugger, with JS (mostly front end, that is) I keep reverting to console.log ... why? because JS is async and debugging through async code is a pain in the rear.

Also, as soon as JS is being transpiled (Babel and Webpack and so on) it becomes a pain unless you've "mastered" the art of setting up code maps (I'm not even using the proper word I think, that's how far detached I am from this whole thing).

I can't be bothered with that debugger, "console.log" just gets me the answers that I need in a faster and easier way.

Just give me transparent JS debugging without the whole async and transpilation crap, the moment I don't need a degree in theoretical quantum mechanics in order to be smart enough to use the JS debugger then I'll use it.

Collapse
 
nyxtom profile image
Tom Holloway 🏕

Indeed, another common method I've used for years is just add a number of debug statements and control the level of debug logs with DEBUG=pattern*. Helps for when you need a quick overview of what's happening over time without wanting to step into things. This post is mainly referencing the uncommonly used chrome debugger for nodejs backend code that is available.

Collapse
 
leob profile image
leob

Good points, DEBUG=pattern* has occasionally also worked for me, or putting breakpoints at specific places rather than trying to step into things.

Collapse
 
hackdefendr profile image
Blueteam 4 Life

Woke up this morning wondering if there was a better way that printing to the console. Wasn't even specifically searching for this, but I am sure glad I found it. Bookmarked and Shared!

Collapse
 
wesley7104 profile image
Wesley Randolph

I honestly did not know this even existed... Thanks! #LearnSomethingNewEveryDay

Collapse
 
nyxtom profile image
Tom Holloway 🏕

No problem! I put stuff like this as a reminder to myself that these sort of tools are there to help. Glad it helps!

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

I cannot shake this habit. Remove Console then yeah I would use debugger, sometimes I just want to dubug at a glance right in my IDE

Collapse
 
sagar profile image
Sagar

This is really helpful for us. Do you know how can we attach debugger to serverless-framework's of lambda functions? I was facing annoying issue with lambda function and it's very hard to put console.log everywhere.

Collapse
 
jrohatiner profile image
Judith

Thx! Very helpful info 👍