簡體   English   中英

node.js fs.existsSync 始終為 false

[英]node.js fs.existsSync always false

我在這個路徑上有一個文件: ~/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

這工作正常

~對shell(終端進程)來說是特殊的,擴展到當前主目錄,但在其他情況下沒有特殊性。 您需要使用絕對路徑或相對路徑(相對於流程)。

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

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

或者,如果您在~/example運行該進程,則此相對路徑將起作用:

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

我認為 Node.js 不支持使用 ~ 來引用用戶的主目錄。 因為在 Windows 中沒有等效的命令。

您可以按照此線程進行完整的討論。 https://github.com/nodejs/node/issues/684

目前,您可以根據需要使用untildify npm 包。

您可以使用const homedir = require('os').homedir();用動態獲取的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')

希望有幫助!

暫無
暫無

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

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