Работали ли вы с Stream API в Node.js?

«Работали ли вы с Stream API в Node.js?» — вопрос из категории Node.js Core, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, активно использовал Stream API для обработки больших файлов и сетевых данных. Основные типы стримов: Readable, Writable, Duplex и Transform. Например, для обработки логов большого размера я использовал fs.createReadStream в паре с Transform стримом для парсинга и Writable для записи агрегированных результатов.

const fs = require('fs');
const { Transform } = require('stream');

const logParser = new Transform({
  transform(chunk, encoding, callback) {
    const lines = chunk.toString().split('n');
    const errors = lines.filter(line => line.includes('ERROR'));
    this.push(errors.join('n'));
    callback();
  }
});

fs.createReadStream('app.log')
  .pipe(logParser)
  .pipe(fs.createWriteStream('errors.log'));

Также использовал pipeline для безопасного соединения стримов с автоматической обработкой ошибок и очисткой ресурсов. Stream API критически важен для эффективной работы с I/O в Node.js, так как позволяет не блокировать Event Loop и экономить память.