Node.js fs.unlinkSync удаляет файлы, но не папки

#javascript #node.js #ajax #fs

Вопрос:

Я могу удалить все файлы изображений (.png, .jpg и т. Д.), Но я не могу удалить папки…

Это мой блог с кодом:

 router.post('/remove-file', async (req, res) => {

    const removeDocuments = await req.body.removeDocuments
    // removeDocuments[0] equals to '/assets/img/folder'
    // removeDocuments[1] equals to '/assets/img/image.jpg'

    if(removeDocuments){

        for (let i = 0; i < removeDocuments.length; i  ) {
            fs.unlinkSync('.'   removeDocuments[i])
        }

        res.send({
            status: true
        })

    }

})
 

Код ошибки, который я получаю:

 (node:808) UnhandledPromiseRejectionWarning: Error: EPERM: operation not permitted, unlink './assets/img/folder'
 

В чем проблема, которую я сделал? Как это решить?

Ответ №1:

Разорвать связь удаляет имя из файловой системы и файл, на который оно ссылается. Он не удаляет каталоги, так как это может привести к созданию файлов-сирот. Используйте rmSync с recursive: true для удаления каталогов.

Комментарии:

1. Это работает, спасибо. Также rmdirSync работает без использования recursive: true . Но удаляет только пустые папки!!!