Вам нужно будет отслеживать обратный вызов на res.sendFile()
, чтобы вы знали, когда отправка действительно была выполнена, прежде чем вы сможете безопасно удалить свой файл.
res.sendFile()
асинхронный, поэтому он возвращается до выполнения задания, поэтому вы удаляли файл до выполнения res.sendFile()
. Используйте обратный вызов, чтобы узнать, когда это на самом деле сделано.
let fname = path.join(__dirname, "../../image", `/${response.id}.png`);
res.status(200).sendFile(fname, err => {
if (err) {
console.log(err);
res.sendStatus(500);
}
fs.unlink(imagePath);
});
Примечание. При передаче обратного вызова на res.sendFile()
необходимо вручную обработать состояние ошибки и отправить ответ об ошибке, повторить попытку, отправить альтернативное содержимое, et c ... чтобы отправить соответствующий ответ.
Мне также интересно, почему вы отправляете одно имя файла и пытаетесь удалить другое. Разве не имеет смысла использовать одну и ту же локальную переменную для имени файла, которое вы отправляете, и файла, который вы удаляете?