2012-09-27 3 views
3

Я пытаюсь выполнить простую задачу, удалив файл. Ошибка действительно не говорит мне, почему она не может удалить файл. Любые идеи о том, что это может быть и как я могу узнать больше подробных ошибок в будущем?Не удается удалить файл, и я не получаю подробный ENOENT

Мой код:

var fs = require('fs'); 

fs.unlink('/file/path.jpg', function(err){ 
    if (err) throw err; 
}); 

Моя ошибка:

DEBUG: 

DEBUG: /Users/vartanarabyan/Development/NodeJS/orcha/routes/document.js:67 

DEBUG:    if (err) throw err; 

DEBUG:     ^

DEBUG: Error: ENOENT, unlink '/Users/vartanarabyan/Development/NodeJS/orcha/public/uploads/5d78abfefd5ff47398103ada55d9be47' 

DEBUG: Program node app exited with code 1 

ответ

9

ENOENT означает No such file or directory. Вы пытаетесь удалить файл, который не существует.

+1

Файл находится на точном пути, так что не может быть правдой. –

+1

Ваши ссылки 'unlink'' path.jpg', но ошибка показывает только '../5d78abfefd5ff47398103ada55d9be47'. Вам нужно добавить расширение «.jpg», возможно? – nneonneo

+0

Это был просто пример пути, поэтому я не вставляю длинную вещь –

3

ok исправлена ​​проблема с помощью fs.unlinkSync (path)

+0

Я не считаю это удовлетворительным решением проблемы: если удаление файла работает только в том случае, если вы блокируете во время процесса, у вас наверняка будет необнаруженное состояние гонки в вашем коде, и он найдет другой способ укусить вас позже , Если вы не знаете * почему * то, что вы делали, похоже, устранило проблему, вы, вероятно, на самом деле не исправили ее. Если это не «выброшенный» код, предназначенный для разового использования, еще раз подумайте о том, что происходит. – ebohlman

+0

@ebohlman, кажется, что если поисковик/проводник открыт в каталоге, и файл, который вы пытаетесь удалить, присутствует, его считается инициированным и не удаляется, пока этот процесс не будет закрыт. Его тип нечетный, потому что файл действительно не используется и не блокируется. –

Смежные вопросы