【问题标题】:Empty folder still persists after recursively deleting using fs.rmdir使用 fs.rmdir 递归删除后,空文件夹仍然存在
【发布时间】:2021-08-17 04:24:06
【问题描述】:

我正在尝试以递归方式删除文件夹,但在使用 fs.rmdir(dest, { recursive: true }); 时文件夹本身仍然存在(空) 有没有其他人遇到过这个问题?如果有,您是如何解决的?

我正在使用Node v14.17.0

【问题讨论】:

  • 您确定其中没有隐藏文件或您没有权限的文件或某些进程具有打开文件句柄的文件吗?
  • 没有隐藏文件,我有 root 权限,但它可能是另一个进程不允许我执行删除,因为我已经尝试了其他库,如 rimraf,但问题仍然存在。有没有办法检查哪些进程在文件夹上有打开的句柄或强制删除?
  • 你在什么操作系统上运行?
  • 我使用的是 Windows 10
  • 如果 Windows 资源管理器打开并指向该目录,它不会让您删除它。

标签: javascript node.js filesystems fs


【解决方案1】:

为遇到相同问题的其他人提供一个 hacky 解决方案:

fs.rmdir(dest, { recursive: true }, (err) => {
    if (err) throw err;
    try {
        if (fs.existsSync(dest)) fs.unlinkSync(dest);
    } catch (e) {
        // handle error
        return;
    }
});

【讨论】:

  • if (err) throw err; 根本没有帮助你。你几乎不应该在异步回调中编写它,因为没有人可以捕获它或对它做任何事情,它可能会被忽略或者它可能会关闭你的应用程序。
猜你喜欢
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多