node.js fs.existsSync始终为false

时间:2017-08-19 16:22:41

标签: javascript node.js path fs

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

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

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

始终返回false

如果我在终端:

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

这很好用

3 个答案:

答案 0 :(得分:2)

~对shell(终端进程)来说是特殊的,扩展到当前的主目录,但是不是特殊的。您需要使用绝对路径或相对路径(相对于流程)。

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

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

或者,如果您正在~/example中运行该流程,那么此相对路径将起作用:

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

答案 1 :(得分:1)

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

您可以按照此主题进行完整讨论。 Transform csv into transactions for arules

暂时您可以使用https://github.com/nodejs/node/issues/684 npm包来满足您的需求。

答案 2 :(得分:0)

您可以使用~homedir替换为动态获取的const homedir = require('os').homedir();

所以代替:

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

您可以执行以下操作:

const homedir = require('os').homedir();
fs.existsSync(homedir + '/Downloads/flightlog_2017-71-19_19747.txt')

希望有帮助!