Ошибка [ERR_STREAM_PREMATURE_CLOSE]: преждевременное закрытие в потоке конвейера узла - PullRequest
1 голос
/ 02 мая 2019

Я использую функциональность stream.pipeline из узла для загрузки некоторых данных в S3. Основная идея, которую я реализую, - это извлечение файлов из запроса и запись их в S3. У меня есть один pipeline, который извлекает zip-файлы и успешно записывает их в S3. Тем не менее, я хочу, чтобы мой второй pipeline сделал тот же запрос, но разархивировал и записал разархивированные файлы в S3. Код конвейера выглядит следующим образом:

pipeline(request.get(...), s3Stream(zipFileWritePath)),
pipeline(request.get(...), new unzipper.Parse(), etl.map(entry => entry.pipe(s3Stream(createWritePath(writePath, entry)))))

Функция s3Stream выглядит так:

function s3Stream(file) {
    const pass = new stream.PassThrough()
    s3Store.upload(file, pass)
    return pass
}

Первый pipeline работает хорошо, и в настоящее время активно работает на производстве. Однако при добавлении второго конвейера я получаю следующую ошибку:

Error [ERR_STREAM_PREMATURE_CLOSE]: Premature close
at Parse.onclose (internal/streams/end-of-stream.js:56:36)
at Parse.emit (events.js:187:15)
at Parse.EventEmitter.emit (domain.js:442:20)
at Parse.<anonymous> (/node_modules/unzipper/lib/parse.js:28:10)
at Parse.emit (events.js:187:15)
at Parse.EventEmitter.emit (domain.js:442:20)
at finishMaybe (_stream_writable.js:641:14)
at afterWrite (_stream_writable.js:481:3)
at onwrite (_stream_writable.js:471:7)
at /node_modules/unzipper/lib/PullStream.js:70:11
at afterWrite (_stream_writable.js:480:3)
at process._tickCallback (internal/process/next_tick.js:63:19)

Буду очень признателен за любую идею, которая может быть причиной этого или решениями этого вопроса!

...