epipebomb
Destroy EPIPE errors when stdout runs through a truncated pipe
Last updated 8 years ago by hichaelmart .
Repository · Original npm · Tarball · package.json
$ cnpm install epipebomb 
SYNC missed versions from official npm registry.

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.

Current Tags

  • 1.0.0                                ...           latest (4 years ago)

4 Versions

  • 1.0.0                                ...           4 years ago
  • 0.1.1                                ...           8 years ago
  • 0.1.0                                ...           8 years ago
  • 0.0.1                                ...           8 years ago

Copyright 2014 - 2017 © taobao.org |