Как преобразовать ReadableStream в ReadStream в NodeJS?

Я использую nodemailer и pdfmake для создания PDF-файла и отправки его во вложениях электронной почты. У меня не так много опыта работы с файлами в NodeJS, и я не могу заставить его работать.

См. пример , где файл сохранен. Поскольку я проверил типы, возвращает расширение NodeJS.ReadableStream.

В nodemailer я могу включать вложения как Streamили См. документацию.

Однако я не могу отправить вложение, не сохранив его и не указав путь к файлу.

Я попытался предоставить возвращенное из createPdfKitDocumentкак есть, это приводит к зависанию обещания. Я попытался обернуть его Readable.from(), это не сработало. я пытался позвонить .read()на результат, и это не привело к зависанию обещания, но pdf не может быть открыт.

Любые идеи, как я могу преобразовать ReadableStreamк Readable, или Buffer?

1 ответ

потоки типов используются в старых библиотеках и версиях 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.
});

Ссылка: https://nodejs.org/api/stream.html#stream_readable_wrap_stream . Для получения дополнительной информации также обратитесь к https://nodejs.org/api/stream.html#compatibility-with-older-nodejs-versions.

Другие вопросы по тегам