Kluczowym problemem jest to, że jeśli plik źródłowy, do którego wskazuje dowiązanie symboliczne, nie istnieje, ale dowiązanie symboliczne (obecnie martwe) nadal istnieje, wówczas fs.exists(symlink)
zwróci false
.Sprawdź, czy istnieje dowiązanie symboliczne w pliku node.js
Oto mój przypadek testowy:
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);
});
});
});
});
});
Wynikiem tego jest:
first exists true
exists after unlink src false // symlink still exists, why is it false??
Problem pojawia się, ponieważ chcę, aby utworzyć dowiązania, jeśli nie istnieje, lub odłączyć go i ponownie go utworzyć, jeśli tak. Obecnie używam fs.exists, aby wykonać tę kontrolę, ale wpadł na ten problem. Czym jest alternatywa poza fistesistami, którzy nie będą mieli tego samego problemu?
Korzystanie węźle 10 na CentOS Vagrant na Windows 7.