[英]Check if a symlink exists in node.js
關鍵問題是,如果符號鏈接指向的源文件不存在,但(現在已死)符號鏈接仍然存在,則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之外還有什么選擇?
在Windows 7上的CentOS Vagrant上使用節點10。
請嘗試使用fs.lstat和fs.readlink 。 即使目標不存在, lstat
應該為符號鏈接提供stats對象, readlink
應該為您提供目標路徑,因此您可以組合該邏輯以正確識別損壞的鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.