nodejs 使用fs.rmdirSync(Book.genPath(this.unzipPath),{recursive:false}) 删除目录报错

最近做项目使用fs.rmdirSync 删除目录时,返回了如下错误:

“ENOTEMPTY: directory not empty, rmdir
‘D:/develop/file/admin-node/unzip/099407032d622b2f3f2d8fb49bde62d4’”

解决办法:
写了一个删除的方法如下:

 static deleteFolderRecursive (url){
        var files = [];
        /**
         * 判断给定的路径是否存在
         */
        if (fs.existsSync(url)) {
            /**
             * 返回文件和子目录的数组
             */
            files = fs.readdirSync(url);
            files.forEach(function (file, index) {

                var curPath = path.join(url, file);
                /**
                 * fs.statSync同步读取文件夹文件,如果是文件夹,在重复触发函数
                 */
                if (fs.statSync(curPath).isDirectory()) { // recurse
                    Book.deleteFolderRecursive(curPath);

                } else {
                    fs.unlinkSync(curPath);
                }
            });
            /**
             * 清除文件夹
             */
            fs.rmdirSync(url);
        } else {
            console.log("路径不存在");
        }
    }

使用: Book.deleteFolderRecursive(Book.genPath(this.unzipPath));

之后就可以正常使用了
出现这个的原因:
1、node版本过低,recursive需要高版本的node 才可以使用;升级版本可正常使用,无需自己写方法*(暂无实践,由于自己是win7系统,node 版本无法支持到node 14,目前升级到node 12还是无法使用)*
2、升级node版本后,还是不能使用,可以尝试自己写一个删除的方法。我就属于第二种(尤其是windows系统的小伙伴)

你可能感兴趣的:(前端,nodejs)