Skip to content
A handy way to hook into process.stderr and process.stdout.
Pull request Compare This branch is 8 commits ahead, 1 commit behind digplan:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


A simplified version of a great library: Allows you to grab the Node global process.stdout and process.stderr pipes and listen in.


The API is straightforward. Using either the stderr or the stdout function of the hook library, just pass in a handler function. The optional second argument is a true/false which controls whether or not the data is copied to the original destination or completely intercepted.

    //  Import the library.
var Hook = require('hook-stdio');

    //  Setup up a little container variable for stderr.
var errors = [];

    //  Intercept messages passed to the stderr pipe and add them to the array of errors.
Hook.stderr(errors.push, true);

process.stderr.write('Something catastrophic!');

//  Now errors == ['Something catastrophic!']

Or if you are running your javascript in the context of a node-webkit application:

    //  Import the library.
var Hook = require('hook-stdio');

    //  Intercept messages passed to the stderr and stdout pipes and display them graphically.
Hook.stdout(writeBlackTextToDOM, true);
Hook.stderr(writeRedTextToDOM, true);

function writeBlackTextToDOM (data) {
    document.getElementById('myconsole').innerHTML += '<p style="color:black;" >'+data+'</p>';

function writeRedTextToDOM (data) {
    document.getElementById('myconsole').innerHTML += '<p style="color:red;" >'+data+'</p>';

To restore the pipe to what it was, Hook.stdout and Hook.stderr return a function you can call:

    //  Import the library.
var Hook = require('hook-stdio');

var unhook = Hook.stderr(someFn, true);

    // Later, to restore the stream to what it was
Something went wrong with that request. Please try again.