Ошибка: ENOENT: нет такого файла или каталога, отсоедините

Как видите, по пути есть файл. Но fs говорит, что нет такого файла или каталога. Не могу понять почему?

В другом файле я могу удалить с тем же кодом.

Мой файл boat.js:

boat.findById(req.params.id,function(err, foundBoat) {
    if(err){
        console.log(err);
    }else{
        foundBoat.boatsFoto.forEach(function(path){
            console.log(typeof(path));
            fs.unlink("../public"+path,function(err){
                if(err) throw err;

                console.log('File deleted!');
            });
        });
    } 
});

И это моя ошибка:

Error: ENOENT: no such file or directory, unlink '../public/uploads/akingokay/BoatsFoto/1524411110335kiralik-tekne.jpg'
at Error (native)

И вы можете увидеть мою файловую систему

6 ответов

Решение

Можете ли вы попробовать это вместо этого:

fs.unlink("public"+path,function(err){
            if(err) throw err;

            console.log('File deleted!');
        });

Вы должны сначала установить path модуль через CLI:

npm install path --save

и использовать это:

fs.unlink(path.join("public/" + path, photo.id + ".jpg"), function(response) {
  // handle the callback
});

Установить и импортировать path модуль. это поможет вам https://nodejs.org/api/path.html

Вместо "../public"+path использование path.join("../", "public", path);

Это зависит от того, где вы размещаете сервер. Если он находится на локальной машине, вам, вероятно, потребуется указать полный путь к файлу (файлам), который вы хотите удалить или манипулировать им. Если он находится на работающем веб-сервере, вам нужно будет указать полный путь к нему.

на "локальной машине" это может выглядеть примерно так:

fs.unlink('/home/user/project/someothername/'+filename, err => {
// handler
});

Проверьте, имеет ли переменная пути, которую вы добавляете в "/public", "/" в начале. Если его нет / он разделяется, он будет трактовать путь как единое целое.

Считай, что ты в app.js file и укажите относительный путь удаления файла в fs.unlink('path/to/file'). это сработает!

Другие вопросы по тегам