How to use transform stream using query?

Basically, I would like to modify the HTTP response before sending it to the client using conversion streams, but my code below causes an error: [Error: write after completion].

The documentation at http://nodejs.org/api/stream.html#stream_writable_end_chunk_encoding_callback says:

Calling write () after calling end () will throw an error.

How can I prevent write () from being called after end () in this case?

var request = require('request');
var Transform = require('stream').Transform;
var http = require('http');

var parser = new Transform();
parser._transform = function(data, encoding, done) {
  console.log(data);
  this.push(data);
  done();
};

parser.on('error', function(error) {
  console.log(error);
});

http.createServer(function (req, resp) {
  var dest = 'http://stackoverflow.com/';
  var x = request({url:dest, encoding:null})

  x.pipe(parser).pipe(resp)
}).listen(8000);
+4
source share
1 answer

, . , x , parser: write after end.

, :

function createParser () {
    var parser = new Transform();
    parser._transform = function(data, encoding, done) {
        console.log(data);
        this.push(data);
        done();
    };
    return parser;
}

http.createServer(function (req, resp) {
  var dest = 'http://stackoverflow.com/';
  var x = request({url:dest, encoding:null})

  x.pipe(createParser()).pipe(resp)
}).listen(8000);
+11

All Articles