27

I'm looking for a way to output Node variables directly into the google chrome browser console. The same way a console.log() works on the client side. Something like this for php. This would greatly speed up development.

ThomasReggi
  • 55,053
  • 85
  • 237
  • 424
  • 1
    This isn't exactly what you're looking for, but take a look at node-inspector, https://github.com/dannycoates/node-inspector/. – Ryan Olds Jul 28 '12 at 20:18

7 Answers7

22

NOTE: Since the old answer (written in september 2014) refers to an older version of node-inspector, my instructions are not relevant anymore in 2017. Also, the documentation has gotten a lot better, so I have updated my original answer:

node-inspector is what you need. It opens up an instance of Chrome with its developer tools for debugging.

It's also easy to use:

1. Install

$ npm install -g node-inspector

2. Start

$ node-debug app.js

Source: https://github.com/node-inspector/node-inspector

Nahn
  • 3,196
  • 1
  • 24
  • 23
  • 1
    Outdated - see https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27 – Ari Seyhun Mar 20 '20 at 06:24
6

You might want to try NodeMonkey - https://github.com/jwarkentin/node-monkey

HonzaBé
  • 752
  • 1
  • 16
  • 26
5

I know it's an old question but came on top of my Google search so maybe somebody will find my answer useful.

So you can use node --inspect-brk index.js

Now, all you have to do is basically just type chrome://inspect in your Chrome address bar and click Open dedicated DevTools for Node

In DevTools, now connected to Node, you’ll have all the Chrome DevTools features you’re used to:

  • Complete breakpoint debugging, stepping w/ blackboxing

  • Source maps for transpiled code

  • LiveEdit: JavaScript hot-swap evaluation w/ V8

  • Console evaluation with ES6 feature/object support and custom object formatting

  • Sampling JavaScript profiler w/ flamechart

  • Heap snapshot inspection, heap allocation timeline, allocation profiling

  • Asynchronous stacks for native promises

Hope that helped.

S1awek
  • 1,524
  • 15
  • 13
  • 1
    Thanks, it worked. Only complaint is breakpoints are not showing in devTools, and I don't know why... – oxk4r Nov 28 '20 at 22:19
3

The closest thing to this I've seen is Node JS console object debug inspector

See this post for usage and potential issues: http://thomashunter.name/blog/nodejs-console-object-debug-inspector/

Moin Zaman
  • 25,281
  • 6
  • 70
  • 74
2

For users with nodejs on linux via ssh-shell (putty):

Problem with nodejs on linux-ssh-shell is, that you have no browser connected. I tried all this solutions, but didnt get it to work.

So i worked out a solution with firebase (https://firebase.google.com), because my project uses firebase. If you are familiar with firebase, than this is a great way. If not, firebase is worth using in combination with nodejs - and its free!

In the server-side-script (started with node) use a own function log():

// server-side:
// using new firebase v3 !
var fbRootRef = firebase.database();
var fbConsoleRef = fbRootRef.ref("/console");
var log = function(args) {
  fbConsoleRef.set({'obj': args});
}

// inside your server-code:
log({'key':'value'});

On client-side you create a firebase-reference on this console-object:

// client side:
fbRootRef.child('/console').on('value', function(d) {
  var v = d.val();
  console.log(v);
});

Now everything logged on server-side with the log() - function is transferred in realtime to the firebase-database and from there triggering the client-console-reference and logged into the browsers console.

If anyone needs help, i will explain in more detail and could give a more extended version of this logging with types (console./log/warn/info), grouping with title-info (i.e. server says: (filename + line).

Setting up firebase for your project is done in max 30 minutes, inserting the console-function in 30 minutes. I think its worth the time!

Marcel Ennix
  • 1,328
  • 1
  • 12
  • 16
0

You can use bonsole, a simple way to log something in browser. Even in Linux, you can go to the LAN's ip to check it.

Yuchen Huang
  • 281
  • 3
  • 10
0

The most simple way with least dependencies is using a WebSocket connection to send the messages to the browser. Any WebSocket example you can find on the internet will suffice to accomplish this. Everything else requires to be heavily integrated into the host system and wouldn't work if you want to actually run this on a remote server. You can also send commands to the server directly from the browser console this way.

Links:
https://www.npmjs.com/package/websocket
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications

Guest
  • 11
  • 2