If I resize an image twice (using the sharp library), my route returns undefined. All my resized images are showing up. It's like somehow, by calling image.resize
and .toBuffer()
twice, it's corrupting the res object.
router.post('/submit', upload.single('file'), (req, res) => {
var image = sharp(req.file.buffer)
image.resize(1500, 1500, { fit: 'inside' }).toBuffer()
.then(buffer => fs.writeFile('../image-md.jpg', buffer))
.then(() => image.resize(500, 500, { fit: 'inside' }).toBuffer())
.then(buffer => fs.writeFile('../image-sm.jpg', buffer))
.then(() => res.json({ success: true }))
.catch(err => res.status(400).json({ error: err.message }))
})
// res is undefined, and no status is even returned
The weird thing is, if I comment out one of the resizes, everything works just fine:
router.post('/submit', upload.single('file'), (req, res) => {
var image = sharp(req.file.buffer)
image.resize(1500, 1500, { fit: 'inside' }).toBuffer()
.then(buffer => fs.writeFile('../image-md.jpg', buffer))
// .then(() => image.resize(500, 500, { fit: 'inside' }).toBuffer())
// .then(buffer => fs.writeFile('../image-sm.jpg', buffer))
.then(() => res.json({ success: true }))
.catch(err => res.status(400).json({ error: err.message }))
})
// res.data is { success: true } and status 200 is returned
Help!