Skip to content

Migrate from .pipe() to stream.pipeline() for improved error handling and Node.js compatibility #703

Description

@franklovefrank

Version: both in 1.x and 2.x

Node.js version: 24

Any other relevant information:

The body-parser library currently uses the deprecated .pipe() method for stream handling in read.js

Node.js recommends using stream.pipeline() instead for better error handling and resource cleanup. Info

We're currently maintaining this patch to address the issue

diff --git a/node_modules/body-parser/lib/read.js b/node_modules/body-parser/lib/read.js
index fce6283..6131c31 100644
--- a/node_modules/body-parser/lib/read.js
+++ b/node_modules/body-parser/lib/read.js
@@ -18,7 +18,7 @@ var iconv = require('iconv-lite')
 var onFinished = require('on-finished')
 var unpipe = require('unpipe')
 var zlib = require('zlib')
-
+var Stream = require('stream')
 /**
  * Module exports.
  */
@@ -166,25 +166,25 @@ function contentstream (req, debug, inflate) {
     case 'deflate':
       stream = zlib.createInflate()
       debug('inflate body')
-      req.pipe(stream)
+      // req.pipe(stream)
       break
     case 'gzip':
       stream = zlib.createGunzip()
       debug('gunzip body')
-      req.pipe(stream)
+      // req.pipe(stream)
       break
     case 'identity':
       stream = req
       stream.length = length
-      break
+      return req
     default:
       throw createError(415, 'unsupported content encoding "' + encoding + '"', {
         encoding: encoding,
         type: 'encoding.unsupported'
       })
   }
-
-  return stream
+  var pass = new Stream.PassThrough(); Stream.pipeline(req, stream, pass, () => {})
+  return pass
 }
 /**

It would be great to see this addressed upstream so we (and other users) can remove our patches.
Thank you guys!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions