Приложение Node.js неожиданно завершает работу при выдаче нескольких запросов. - PullRequest
0 голосов
/ 30 мая 2019

я строю остальные api-сервер, используя node.js. сервер для создания поста. Я использую Multer для загрузки файлов / изображений, и некоторые проверки на стороне сервера с использованием валидатора. ошибка Error: EBUSY: resource busy or locked, unlink 'some-path' сохраняется при каждой попытке отправить несколько запросов, первый запрос будет успешным, хотя следующий запрос вызовет эту ошибку.

Вот мой код в моем контроллере

module.exports.postSavePost = async (req, res, next) => {
    try {
        const image = req.file;

        if (!image) {
            return res.status(422).json({message: 'Please provide a valid image'})
        }

        const imagePath = image.path;

        const errors = validatePost(req.body);
        console.log(errors);

        if (errors.length > 0) {
            // delete the uploaded images
            await fs.unlink(imagePath, (err) => {
                if (err) throw err;
            });

            return res.status(422).json({
                message: 'Invalid inputs',
                errors: errors
            });
        }

        res.status(200).json({message: 'success'});
    } catch (e) {
        next(e); // global error handler express
    }
}

Это мой код в server.js, я использую multer для загрузки файлов

// MULTER FILE UPLOAD
const fileStorage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, 'images');
    },
    filename: (req, file, cb) => {
        cb(null, Date.now() + '-' + file.originalname);
    }
});

const fileFilter = (req, file, cb) => {
    if (
        file.mimetype === 'image/png' ||
        file.mimetype === 'image/jpg' ||
        file.mimetype === 'image/jpeg'
    ) {
        cb(null, true);
    } else {
        cb(null, false);
    }
}

app.use(multer({storage: fileStorage, fileFilter: fileFilter}).single('image'));

Моя цель - удалить загруженный файл / изображение, если проверки для других полей, таких как заголовок и содержимое, не пройдены. первый запрос пары успешно удаляет загруженный файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...