我使用这段代码按需删除文件
{
...
fs.access(path, (err)=> err || fs.unlink(path));
...
}
我收到了这个错误
错误:ENOENT:没有这样的文件或目录,取消链接' C:\ ...' 在错误(本机)
这对我来说毫无意义,因为我在尝试取消链接之前只检查了文件是否存在 - 我感觉有些奇怪的事情会在文件锁定等幕后发生。
如何纠正此错误?
另外,在尝试删除之前,是否需要自己锁定文件,以确保可靠且安全的删除。每次用户尝试删除文件时,我都不会手动删除文件并重新启动服务器。
答案 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.