首页 > 解决方案 > node.js fs模块中的rmSync函数不抛出EBUSY异常

问题描述

我正在尝试使用模块rmSync的功能以同步方式递归删除文件夹fstry/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。我在这里想念什么?

标签: javascriptnode.jswindowsfs

解决方案


推荐阅读