Есть таблица в MySQL, в которой есть ссылки на картинки (оригиналы и превью). На ноде получаю все эти картинки, обхожу их в цикле и удаляю все. Если картинок больше одной пары (пара это оригинал и превью), нода выдаёт ошибку:
Error: EPERM: operation not permitted, unlink 'C:\путь_к_картинке\aa\bb\12345.jpg'
При этом сам файл 12345.jpg удаляется, а остальные (34772.jpg, 87202.jpg, ...) не удаляются, хотя должны. Решение для меня совершенно неочевидно, в интернете ничего дельного не нашёл, кроме даунгрейда npm до версии 5.3.0, который мне не помог.
Windows 7, командная строка запущена от имени администратора
Node.js 8.9.4
npm 5.3.0
Код цикла:
for (var i=0; i<result.length; i++)
{
if (result[i].img)
{
var path_image = path.resolve (CONFIG.STORAGE_DIR_PORTFOLIO, result[i].img);
fs.open (path_image, 'r', (err, fd) =>
{
if (err)
{
/* Если файл не найден, то ничего не делаем */
if (err.code === 'ENOENT')
return;
throw err;
}
/* Удаляем картинку */
fs.unlink (path_image, function (err)
{
if (err)
throw err;
});
});
}
if (result[i].image_preview)
{
var path_image_preview = path.resolve (CONFIG.STORAGE_DIR_PORTFOLIO, result[i].image_preview);
fs.open (path_image_preview, 'r', (err, fd) =>
{
if (err)
{
/* Если файл не найден, то ничего не делаем */
if (err.code === 'ENOENT')
return;
throw err;
}
/* Удаляем превью */
fs.unlink (path_image_preview, function (err)
{
if (err)
throw err;
});
});
}
}