Функция ожидания не возвращается к основной функции asyn c - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь сжать изображения в папке загрузки, а затем переместить их в папку оригиналов. Если я не использую asyn c await, изображения будут перемещены в папку до начала сжатия. Но после реализации asun c await функция, которая переименовывает изображения, не выполняется. Я использую функции как локальные.

    const chokidar = require('chokidar');
    var sharp = require('sharp');
    const fs = require('fs');
    const paths = require('path');
    const util = require('util');


    const watcher = chokidar.watch('./uploads', {

        persistent: true,
        useFsEvents: true,
        usePolling: true,
        awaitWriteFinish: {

            stabilityThreshold: 3000,
            pollInterval: 100
        }
    });


    watcher.on('add', function (path) {

        console.log(path);
        const filename = paths.basename(path);
        const name = paths.parse(filename).name;
        

    var compress = function () {

            const pipeline = sharp(path).rotate().resize( width:1500 }).withMetadata();


            pipeline
                .webp()
                .toFile(`compressed/${name}.webp`, function (err) {
                    if (err) console.log(err)
                });

            //console.log('end of function')

        };


        const rename = function () {

            // Move file ./uploads/img.* to ./originals/img.*

            var original = `./uploads/${name}${ext}`;
            var target = `./originals/${name}${ext}`;
            console.log(target, original)
            fs.rename(original, target, (err) => {

                if (err) {console.log(err)}
            });
        };


        (async () => {

                const min = util.promisify(compress);
                await min();
                console.log('end of function') // this and below is not executed
                const mv = util.promisify(rename);
                await mv();
                console.log(`compressed image ${filename}`)
            }
        )();
    });

...