[英]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.