0

我有一个可读的流,它给了我对象:

const readable = getReadableStream();

我可以将可读的管道传输到转换流中:

  const t = new Transform({
    objectMode: true,
    transform(chunk, encoding, cb) {
      this.push(chunk);
      cb();
    },
    flush(cb) {
       cb();
    }
  });

  readable.pipe(t);
  readable.push({some:'object'});

问题是我收到此错误:

TypeError [ERR_INVALID_ARG_TYPE]:“块”参数必须是字符串或缓冲区类型之一。在 Transform.ondata (_stream_readable.js:642:20) 在 Transform.emit (events.js:159:13) 的 WriteStream.Socket.write (net.js:705:11) 接收到类型对象

我认为正在发生的事情是在转换流中,当transform()被调用时,第一个参数(块)必须是字符串或缓冲区。

但是,我知道我可以打电话

this.push({foo:'bar'})在转换方法中......只有传入的数据似乎被限制为字符串或缓冲区......

我的问题分为两部分:

  1. 有没有办法创建一个可以传递对象的转换流,而不仅仅是字符串或缓冲区?

  2. 如果 1 的答案是“否”,那么在转换流中将 JS 对象转换为 JSON 的可靠方法是什么?

可能会丢失一些调用,以便它接收对象而不是字符串。

4

0 回答 0