javascript - node.js fs模块中的rmSync函数不抛出EBUSY异常
问题描述
我正在尝试使用模块rmSync
的功能以同步方式递归删除文件夹fs
。try/catch
当要删除的文件夹中的任何文件被其他进程使用时,我已将此函数调用包含在块内以处理错误。但即使我尝试打开文件并在其中写入和保存内容,它也不会引发EBUSY
异常。然而,当我用它的异步对应物(即rm
)尝试同样的事情时,我能够在回调函数中得到那个错误。
以下是这两种情况的代码:
同步
const removeFolder = (folderPath) => {
try {
fs.rmSync(folderPath, {recursive: true})
} catch(error) {
console.log(error.message);
}
}
结果:代码没有引发 EBUSY 异常
异步
const removeFolder = (folderPath) => {
fs.rm(folderPath, {recursive: true}, (error) => {
if (error) console.log(error.message);
});
}
结果:
EBUSY: resource busy or locked, rmdir
我正在使用最新版本的节点 v14.17.0。我在这里想念什么?
解决方案
推荐阅读
- dplyr - 在 R 中使用 mutate 和 case_when
- javascript - 导入包含脚本标签的外部 html - 不起作用
- python - 如何将 Python C API 代码转换为 Boost::Python?
- c - 尽管文件中存储了数据,为什么最近声明的文件指针返回(-1)?
- javascript - 在地址栏中隐藏或更改 URL
- javascript - 使用第一行作为表头 (CSS) 时允许在第二个表行中滚动
- windows - 为什么 git@github.com:Windows 中的权限被拒绝(公钥)?
- python - 我似乎无法在我的代码中修复这些错误
- html - 字间距随着 WKWebView 中长阿拉伯语文本的增加而增加 - Swift
- excel - 需要将垂直数据转置为水平格式,但在 Excel VBA 中,垂直格式的单元格可以有超过 2 或 3 个子类别