Как вы можете видеть pngToJpeg
, dir+file_name_without_ext
асинхронно - если вы хотите продолжить работу .then
, вам нужно дождаться начального writeFileSync
и then
первого разрешения. Поместите все, что зависит от асинхронных операций внутри then
. Например:
if (extension[0] == '.png') {
console.log('found');
const buffer = fs.readFileSync(dir + file);
pngToJpeg({ quality: 100 })(buffer)
.then(output => {
fs.unlinkSync(dir + file);
fs.writeFileSync(dir + file_name_without_ext + '.jpg', output);
extension = '.jpg';
const target_file = target + file_name_without_ext + '.' + suffix + extension;
// do some manipulations on dir+file_name_without_ext+extension
});
}
(Вы также должны позаботиться о том, чтобы неявно создавать глобальные переменные. Например, используйте for (const i in files)
вместо этого или, возможно, for (const file of files)
избегать необходимости возиться с несущественными признаками)