Ключевой проблемой является то, что если исходный файл, на который указывает символьная ссылка, не существует, но символическая ссылка (теперь мертвая) все еще существует, тогда 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.