Ключевой проблемой является то, что если исходный файл, на который указывает символьная ссылка, не существует, но символическая ссылка (теперь мертвая) все еще существует, тогда fs.exists(symlink) вернет false.
Вот мой тестовый пример:
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);
});
});
});
});
});
Результат:
first exists true
exists after unlink src false // symlink still exists, why is it false??
Проблема возникает из-за того, что я хочу создать символическую ссылку, если она не существует, или отмените ее и заново создайте, если это произойдет. В настоящее время я использую fs.exists для выполнения этой проверки, но столкнулся с этой проблемой. Что такое альтернатива, кроме fs.exists, которая не будет иметь эту же проблему?
Использование Node 10 на CentOS Vagrant в Windows 7.