首页 > 解决方案 > 节点 FS.existsSync 在存在的文件上返回 false

问题描述

我目前正在尝试在运行 fs.appendFile() 之前找出文件是否存在,以便确定是否需要在文档的开头插入一些文本,或者是否需要插入换行符。

我编写了一个函数,当我在电子之外调试它(这是针对电子应用程序)时,fs.existsSync 进程按预期返回 true 或 false。但是,当我在应用程序中运行它时,它只返回 false,无论它是否确实存在。

function foo(){
    const USER = process.env['USERPROFILE'].split(path.sep)[2];
    const fpath = `C:/Users/${USER}/OneDrive/dir/filename.txt`;
    let text = "text";
    const exists = fs.existsSync(fpath);
    console.log(exists); // false no matter what
    if(!exists){
        text = "foo";
    }else{
        text = "bar";
    }
    fs.appendFile(fpath, myob_import_text, (err) => { // Only ever adds "foo" to the document.
        if(err) throw err;
    });  
}

我认为这与在电子环境中运行与仅在节点环境中运行有关,但我不知道如何解决这个问题,因此将不胜感激。

标签: javascriptnode.jselectronfs

解决方案


推荐阅读