簡體   English   中英

檢查node.js中是否存在符號鏈接

[英]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.lstatfs.readlink 即使目標不存在, lstat應該為符號鏈接提供stats對象, readlink應該為您提供目標路徑,因此您可以組合該邏輯以正確識別損壞的鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM