Я использую Node & Express & Sharp для:
Загрузка изображения в виде потока -> преобразование в webp -> ответ пользователя преобразованным изображением
Этот код выполняет свою работу:
import express from 'express';
import * as url from 'url';
const sharp = require('sharp');
var request = require('request');
app.get('*', function (req, res1)
{
let imgPath = url.resolve('http://localhost', req.originalUrl);
request({
url : imgPath,
encoding: null
}, function (err, res, bodyBuffer)
{
sharp(bodyBuffer)
.webp({quality: 90})
.toBuffer()
.then((myBuffer) =>
{
res1.writeHead(200, {'Content-Type': 'image/webp'});
res1.end(myBuffer, 'binary');
}).catch(error=>console.log(error));;
});
});
app.listen(app.get('port'), function ()
{
console.log('app running on port', app.get('port'));
});
Я должен сказать, что код работает (изображение передается через webp), но я получаю исключение после того, как изображение передано:
app running on port 5000
[Error: Input buffer contains unsupported image format]
Вопрос:
Почему я получаю эту ошибку и как ее решить?
NB
Я также пытался предлагаемое решение здесь , без успеха: Cannot pipe, not readable