如何在NodeJS中将可读流(ReadableStream)转换为读取流(ReadStream)?

9
我正在使用nodemailer和pdfmake创建PDF并将其作为附件发送到电子邮件中。我在NodeJS中的文件处理方面没有太多的经验,因此无法使其正常工作。
请参见示例,其中保存了文件。根据我的检查,createPdfKitDocument返回了NodeJS.ReadableStream的扩展类型。
在nodemailer中,我可以包含StreamReadable作为附件,请参见文档
但是,我无法在不保存它的情况下发送附件并提供文件路径。
我尝试直接使用createPdfKitDocument返回的ReadableStream,但这会导致Promise挂起。我尝试使用Readable.from()包装它,但它也无法工作。我尝试在结果上调用.read(),这不会导致Promise挂起,但是无法打开PDF。
有什么想法可以将ReadableStream转换为ReadableBuffer吗?
1个回答

4

NodeJS.ReadableStream类型的流主要用于旧版NodeJS库。你可以使用Readable中的wrap方法将NodeJS.ReadableStream转换为可读流。

const { OldReader } = require('./old-api-module.js');
const { Readable } = require('node:stream');
const oreader = new OldReader(); // will return stream of NodeJS.ReadableStream
const myReader = new Readable().wrap(oreader);

myReader.on('readable', () => {
  myReader.read(); // etc.
});

参考: https://nodejs.org/api/stream.html#stream_readable_wrap_stream。如需更多信息,请参阅此链接:https://nodejs.org/api/stream.html#compatibility-with-older-nodejs-versions


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接