попытался использовать imagemin-webp для сжатия изображений в webp, но сжатые файлы не были опубликованы - PullRequest
0 голосов
/ 27 октября 2019

Я хочу сжать изображения большого размера из jpg или png в webp, поэтому я попробовал библиотеки imagemin и imagemin-webp и интегрировал их в код загрузки изображений с помощью multer:

let storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, './uploads/rooms');
    },
    filename: function (req, file, cb) {
        cb(null, req.params.room_id + "_" + Date.now() + "_" + Math.floor(Math.random() * 10000) + file.originalname.substr(-7));
    }
});
let upload = multer({ storage: storage })

//add pictures to a room
venuesRoutes.route('/:id/room/:room_id/add_pictures').post(upload.array('pics', 20), function (req, res) {

    Venue.findOne({ _id: req.params.id, user: req.user._id }).populate('city').populate('rooms.availability').exec(function (err, venue) {
        if (err) {
            res.status(404).send("venue is not found");
        }
        else {
            let room = venue.rooms.id(req.params.room_id)
            req.files.map((pic) => {
                (async () => {
                    const files = await imagemin([pic.path], {
                        destination: './uploads/compressed-images',
                        plugins: [imageminWebp({ quality: 50 })],
                    });
                    console.log(files);
                })();
                room.pics.push({ path: pic.path })
            })
            venue.save(function (err) {
                if (!err) res.status(200).send({ msg: "pictures updated", venue: venue });
            });
        }
    });
});

, но с помощью консоли.log (файлы) это то, что я получаю, когда загружаю 2 файла:

[]
[]
...