Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    epipebombpublic

    EPIPE Bomb

    By default, node throws EPIPE errors if process.stdout is being written to and a user runs it through a pipe that gets closed while the process is still outputting (eg, the simple case of piping a node app through head).

    This seemed a little overzealous to me, so I wrote this to suppress such errors.

    Before

    example.js

    ;(function log() {
      console.log('tick')
      process.nextTick(log)
    })()

    Oh the humanity

    $ node example.js | head
    tick
    tick
    tick
    tick
    tick
    tick
    tick
    tick
    tick
    tick
     
    events.js:66
            throw arguments[1]; // Unhandled 'error' event
                           ^
    Error: write EPIPE
        at errnoException (net.js:782:11)
        at Object.afterWrite (net.js:600:19)

    After

    example.js

    require('epipebomb')()
     
    ;(function log() {
      console.log('tick')
      process.nextTick(log)
    })()

    Oh the joy!

    $ node example.js | head
    tick
    tick
    tick
    tick
    tick
    tick
    tick
    tick
    tick
    tick

    CLI usage (Node 4.x and up)

    Require epipebomb/register from the command line

    node -r epipebomb/register some-script.js | head

    or use epipebomb as a drop-in replacement for node

    epipebomb some-script.js | head

    Notes

    Only the EPIPE error is captured on process.stdout - all other errors are thrown as per usual.

    Keywords

    none

    install

    npm i epipebomb

    Downloadsweekly downloads

    821

    version

    1.0.0

    license

    none

    repository

    githubgithub

    last publish

    collaborators

    • avatar