node.js fs.existsSync始终为false

我在这个path上有一个文件: ~/Downloads/flightlog_2017-71-19_19747.txt

但是,当我尝试写或检查它是否存在:

fs.existsSync('~/Downloads/flightlog_2017-71-19_19747.txt')

它总是返回false

如果我在terminal做:

$ nano ~/Downloads/flightlog_2017-71-19_19747.txt

这工作正常

       

网上收集的解决方案 "node.js fs.existsSync始终为false"

我不认为在Node中支持〜引用用户的主目录。 因为在Windows中没有等效的命令。

你可以按照这个线程进行完整的讨论。 https://github.com/nodejs/node/issues/684

暂时你可以使用untildify npm包来满足你的需求。

~对shell(terminal进程)是特殊的,扩展到当前的home目录,否则不是特殊的。 您将需要使用绝对path或相对path(相对于进程)。

例如,假设~映射到/home/arti

 fs.existsSync('/home/arti/Downloads/flightlog_2017-71-19_19747.txt') 

或者,如果你在~/example运行这个进程,那么这个相对path将起作用:

 fs.existsSync('../Downloads/flightlog_2017-71-19_19747.txt')