После обновления до узла 10-alpine - ERR_STREAM_CANNOT_PIPE - PullRequest
1 голос
/ 24 сентября 2019

После того как я обновил наш серверный узел JS до версии 10-alpine, я начал получать следующую ошибку

Ошибка [ERR_STREAM_CANNOT_PIPE]: Невозможно передать по каналу, не читается.

Я должен упомянуть, что с узлом 8-alpine этот код работает (я пробовал с откатом)

В своем коде я пытаюсь вернуть файл из GCloud:

try {
        const file = await 
         gcs.bucket(`BUCKET_NAME`).file(filePath);

        if (file) {
            const results = await file.getMetadata();
            const stream = await file.createReadStream();
            return res.pipe(stream);
            else {
                return send(res, 403)
            }
        }
        else {
            return send(res, 404);
        }
    } catch (err) {
        console.error(err);
        return send(res, 500);
    }

Есть какой-либокто-то встречал такую ​​проблему после обновления до узла -10 -alpine?

1 Ответ

0 голосов
/ 26 сентября 2019

Именно то, что говорит об ошибке.res.pipe(steam) присоединяет доступный для записи поток, stream к читаемому потоку res.Но stream - это поток. Доступно для чтения.Вместо этого используйте fs.createWriteStream(...) или file.createWriteStream(...).Это могло сработать раньше, потому что ваша функция gcs.bucket(...).file(...) возвращает файл с записываемым файловым дескриптором.Так что это может быть случай неправильной печати утки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...