NodeJS中如何将ReadableStream转换为ReadStream?

Ger*_*áth 9 buffer stream fs node.js

我正在使用 nodemailer 和 pdfmake 创建 pdf,并将其在电子邮件的附件中发送。我对 NodeJS 中的文件处理没有太多经验,而且我无法让它工作。

请参阅保存文件的示例。当我检查过类型时,createPdfKitDocument返回NodeJS.ReadableStream.

在 Nodemailer 中,我可以将附件包含为StreamReadable 查看文档。

但是,我无法在不保存附件的情况下发送附件,并给出文件的路径。

我试图按原样提供ReadableStream返回的内容,这导致了悬而未决的承诺。createPdfKitDocument我尝试用 包裹它Readable.from(),但没有成功。我尝试调用.read()结果,并没有导致悬而未决的承诺,但pdf无法打开。

有什么想法如何将 a 转换ReadableStreamReadable, or Buffer

v1s*_*hva 4

NodeJS.ReadableStream类型流用于较旧的 NodeJS 库和版本。您可以使用wrap中的方法Readable转换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.
});
Run Code Online (Sandbox Code Playgroud)

参考:https: //nodejs.org/api/stream.html#stream_read_wrap_stream。有关其他信息,请参阅https://nodejs.org/api/stream.html#compatibility-with-older-nodejs-versions