2014-09-12 3 views
1

У меня есть эта функция, в которой каталог имеет те же файлы, что и другой, поэтому один каталог является источником, а другой - тем, который должен выглядеть так, чтобы он удалял файлы, найденные в второй, который не существует в 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

Я только столкнулся с той же проблемой, смогли ли вы когда-нибудь решить эту проблему? –

ответ

-1

Попробуйте обновить до fs-extra, фс. removeSync() работает без проблем.