Node.js Stream.pipeline() Method

11 Oct, 2021
The stream.pipeline() method is a module method that is used to the pipe by linking the streams passing on errors and accurately cleaning up and providing a callback function when the pipeline is done.
Syntax:
stream.pipeline(...streams, callback)
Parameters: This method accepts two parameters as mentioned above and described below.
...streams: These are two or more streams which are to be piped together.
callback: This function is called when the pipeline is fully done and it shows an ‘error’ if the pipeline is not accomplished.
Return Value: It returns a cleanup function.
Below examples illustrate the use of stream.pipeline() method in Node.js:
Example 1:
// Node.js program to demonstrate the     // stream.pipeline() method  // Including fs and zlib modulevar fs = require('fs');const zlib = require('zlib');  // Constructing finished from streamconst { pipeline } = require('stream');  // Constructing promisify from// utilconst { promisify } = require('util');  // Defining pipelineAsync methodconst pipelineAsync = promisify(pipeline);  // Constructing readable streamconst readable = fs.createReadStream("input.text");  // Constructing writable streamvar writable = fs.createWriteStream("output.text");  // Creating transform streamconst transform = zlib.createGzip();  // Async function(async function run() {  try{       // pipelining three streams    await pipelineAsync(      readable,      transform,      writable    );    console.log("pipeline accomplished.");    }    // Shows error  catch(err) {    console.error('pipeline failed with error:', err);  }  })();
Output:
Promise {  }
pipeline accomplished.
Example 2:
// Node.js program to demonstrate the     // stream.pipeline() method  // Including fs and zlib modulevar fs = require('fs');const zlib = require('zlib');  // Constructing finished from streamconst { pipeline } = require('stream');  // Constructing promisify from// utilconst { promisify } = require('util');  // Defining pipelineAsync methodconst pipelineAsync = promisify(pipeline);  // Constructing readable streamconst readable = fs.createReadStream("input.text");  // Constructing writable streamvar writable = fs.createWriteStream("output.text");  // Creating transform streamconst transform = zlib.createGzip();  // Async function(async function run() {  try{       // pipelining three streams    await pipelineAsync(      readable,      writable,      transform    );    console.log("pipeline accomplished.");    }    // Shows error  catch(err) {    console.error('pipeline failed with error:', err);  }  })();
Output: Here, the order of streams is not proper while piping so an error occurs.
Promise {  }
pipeline failed with error: Error [ERR_STREAM_CANNOT_PIPE]: Cannot pipe, not readable
    at WriteStream.Writable.pipe (_stream_writable.js:243:24)
    at pipe (internal/streams/pipeline.js:57:15)
    at Array.reduce ()
    at pipeline (internal/streams/pipeline.js:88:18)
    at Promise (internal/util.js:274:30)
    at new Promise ()
    at pipeline (internal/util.js:273:12)
    at run (/home/runner/ThirstyTimelyKey/index.js:33:11)
    at /home/runner/ThirstyTimelyKey/index.js:45:5
    at Script.runInContext (vm.js:133:20)

Reference: https://nodejs.org/api/stream.html#stream_stream_pipeline_streams_callback.
Akanksha_Rai
Node.js-Stream-module
Node.js
Web Technologies
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.