Выдача ошибки из потока преобразования Node.js

Мне нужно выдать ошибку в потоке Transform.

Обычно я делаю это с функцией обратного вызова в . Я не могу в своей ситуации, потому что мне нужно выдать ошибку, даже если в данный момент через мой поток не проходят данные. То есть, если данные не передаются, не вызываются и нет обратного вызова, который я могу вызвать.

В настоящее время я испускаю ошибку. Что-то вроде этого:

      import { Transform } from 'stream';

export default class MyTransformStream extends Transform {
  constructor(opts) {
    super(opts);

    setTimeout(() => {
      this.emit('error', new Error('Some error!'));
    }, 10_000);
  }

  _transform(chunk, encoding, callback) {
    this.push(chunk);
    callback();
  }
}

Кажется, это работает нормально. Однако в документации есть хорошее предупреждение об этом:

Избегайте переопределения общедоступных методов, таких как write(), end(), cork(), uncork(), read() и destroy(), или генерации внутренних событий, таких как "ошибка", "данные", "конец", "финиш". ' и 'закрыть' через .emit(). Это может нарушить текущие и будущие инварианты потоков, что приведет к проблемам поведения и/или совместимости с другими потоками, потоковыми утилитами и ожиданиями пользователей.

К сожалению, документация, похоже, не предлагает, что делать вместо этого.

Каков правильный способ выбросить эту ошибку за пределы _transform()вызов?

0 ответов

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