2016-10-11 3 views
0

는 내가이 오류 말 그대로 그냥 파일의 존재 전에 검사로 나에게 아무 의미노드 JS - 그런 파일이 없습니까?

Error: ENOENT: no such file or directory, unlink 'C:\ ... ' at Error (native)

있어 수요

{ 
... 
    fs.access(path, (err)=> err || fs.unlink(path));  
... 
} 

에있는 파일을 삭제하려면이 코드 조각을 사용하고 있습니다 링크 해제 시도 - 파일 잠금과 같은 장면에서 이상한 일이 벌어지고있는듯한 느낌이 들었습니다.

이 오류를 어떻게 수정합니까?

또한 강력하고 안전한 삭제를 보장하기 위해 삭제하기 전에 파일을 직접 잠글 필요가 있습니까? 내가 수동으로 파일을 삭제하고 사용자가 파일을 삭제하려고 할 때마다 서버를 다시 시작하지는 않을 것입니다.

+0

*을 확인하시기 바랍니다 * "말 그대로 그냥 링크 해제를 시도하기 전에 파일의 존재 여부를 확인". 파일 존재 확인을하지 마십시오 (이유 때문에 더 이상 사용되지 않습니다). 링크를 해제하고 오류가 있으면이를 잡습니다. – Tomalak

+0

내가 작동 할 때까지 반복적으로 링크를 해제해야합니까? –

+0

오류가 발생하지 않습니다. 혼란스러워합니다. –

답변

1

쓰기 또는 삭제하기 전에 fs.access를 호출하는 것은 좋지 않습니다. 그러지 마,이 나쁜 관행입니다 - 아래 링크 https://nodejs.org/api/fs.html#fs_fs_access_path_mode_callback

Using fs.access() to check for the accessibility of a file before calling fs.open(), fs.readFile() or fs.writeFile() is not recommended. Doing so introduces a race condition, since other processes may change the file's state between the two calls. Instead, user code should open/read/write the file directly and handle the error raised if the file is not accessible.