2014-04-23 17 views
7

Önemli sorun, eğer bir bağlantı sembolünün işaret ettiği kaynak dosya mevcut değilse, ancak (artık ölü) sembolik bağlantı hala mevcutsa, fs.exists(symlink)false'u döndürecektir. Bunun yoksa bir sembolik oluşturmak veya bağlantısını kaldırmak istiyorum, çünkünode.js içinde bir link bağlantısının olup olmadığını kontrol edin

first exists true 
exists after unlink src false // symlink still exists, why is it false?? 

sorunu da ortaya çıkıyor:

var fs = require("fs"); 

var src = __dirname + "/src.txt"; 
var dest = __dirname + "/dest.txt"; 

// create a file at src 
fs.writeFile(src, "stuff", function(err) { 
    // symlink src at dest 
    fs.symlink(src, dest, "file", function(err) { 
     // ensure dest exists 
     fs.exists(dest, function(exists) { 
      console.log("first exists", exists); 
      // unlink src 
      fs.unlink(src, function(err) { 
       // ensure dest still exists 
       fs.exists(dest, function(exists) { 
        console.log("exists after unlink src", exists); 
       }); 
      }); 
     }); 
    }); 
}); 

bu sonucudur: Burada

benim test durumdur ve eğer varsa yeniden oluşturun. Şu anda bu denetimi gerçekleştirmek için fs.exists kullanıyorum, ancak bu soruna rastladı. Aynı sorunu olmayan fs.existlerin alternatifi nedir?

yerine fs.lstat ve fs.readlink deneyin Windows 7 üzerinde CentOS Vagrant üzerinde

cevap

8

Düğüm 10 kullanma. lstat, hedef yok olsa bile bir sembolik link için bir istatistik nesnesi vermeli ve readlink hedefe giden yolu bulmalıdır, böylece bu mantığı, bozuk bağlantıları doğru şekilde tanımlamak için birleştirebilirsiniz.

İlgili konular