我有这个函数使一个目录与另一个目录有相同的文件,所以一个目录是源,另一个是看起来像它的那个,所以它删除了第二个不存在的文件在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' }