Я пытаюсь сжать изображения в папке загрузки, а затем переместить их в папку оригиналов. Если я не использую 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}`)
}
)();
});