删除文件同步无法找到文件

时间:2014-09-12 05:43:43

标签: node.js

我有这个函数使一个目录与另一个目录有相同的文件,所以一个目录是源,另一个是看起来像它的那个,所以它删除了第二个不存在的文件在src。无论如何,如果我将fs.rmdirSync替换为fs.rmdir,它可以在下面的函数中运行,但如果我不这样做,它将返回下面显示的错误。

function (srcDir, similarDir){

        srcDir = path.resolve(process.cwd(),srcDir);
        similarDir = path.resolve(process.cwd(),similarDir);
        var info = {deletedFiles : 0, deletedDir : 0};
        dive(similarDir,function(err, file){
            if(err){
                console.log(err.toString())
            }
            else
            {
                var baseFile = path.basename(file,'.css');
                var srcFileDir = path.dirname(file).replace(similarDir,srcDir)
                var srcFilePath = path.resolve(srcFileDir , baseFile);

                if(!fs.existsSync(srcFilePath)){
                    console.log("before");
                    try {
                        fs.rmdirSync(file)
                    }
                    catch(error){
                        console.log(error)
                    }
                    console.log("after");
                    info.deletedFiles++;
                }

            }
        })

这是我使用fs.rmdirsync时发生的错误,虽然该文件确实存在,如果我将其更改为fs.rmdir它可以正常工作(在Windows操作系统上)

{ [Error: ENOENT, no such file or directory 'D:\angularjs\build\css\components\test\test\test.css']
  errno: 34,
  code: 'ENOENT',
  path: 'D:\\angularjs\\build\\css\\components\\test\\test\\test.css',
  syscall: 'rmdir' }

1 个答案:

答案 0 :(得分:-1)

尝试升级到fs-extra,fs.removeSync()可以正常运行。