[英]NodeJS fs.open failing on existing file (not a path issue)
我一直在處理這個問題,所以任何幫助都非常感謝。 所以,我正在下載一個文件並使用PhantomJS和CasperJS保存它。 我要指出它們不是問題。 下載文件沒有問題。
問題是NodeJS在下載后無法識別或打開文件。 我不能fs.stat,fs.open等。什么都行不通。
我將在一秒鍾內分享代碼,但這是日志:
Here: bdTcK6hSdownload.csv
[ '2puzZMeLdownload.csv',
'2s5ICbKNdownload.csv',
'bdTcK6hSdownload.csv',
'izIfagwCdownload.csv' ]
fs.js:230
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
Error: ENOENT, no such file or directory './caspertemp/bdTcK6hSdownload.csv'
at Object.openSync (fs.js:230:18)
at Object.processCSV (/Users/Home/dev/node_modules/inviter/index.js:64:29)
at /Users/Home/dev/node_modules/inviter/index.js:36:33
at ChildProcess.exithandler (child_process.js:281:7)
at ChildProcess.emit (events.js:70:17)
at maybeExit (child_process.js:361:16)
at Process.onexit (child_process.js:397:5)
如您所見,我打印出創建的文件名,然后打印目錄的內容,然后嘗試打開該文件。 如您所見,bdTcK6hSdownload.csv存在於目錄中,但在打開時失敗。
簡單的代碼片段在這里:
console.log('Here: ' + filename);
filenames = fs.readdirSync('./caspertemp/');
console.log(filenames);
var fd = fs.openSync('./caspertemp/' + filename, 'r');
console.log(fd);
在此之前和之后還有更多的事情發生,但由於這個基本功能失敗,所以沒有任何問題。 請幫忙! 這已經嘮叨了幾個星期。
我的猜測是,這是當前工作目錄中的差異。 您是否從同一目錄啟動casperJS和node.js進程? 他們中的任何一個在運行時更改工作目錄嗎? 嘗試這樣的事情,其中node的__dirname
將為您提供當前正在執行的.js
文件的目錄路徑
var path = require("path");
var filename = "bdTcK6hSdownload.csv";
var csvPath = path.resolve(path.join(__dirname, "caspertemp", filename));
console.log(csvPath);
另一種可能性是時機。
我曾經遇到過這樣的情況:文件夾直接出現在文件夾中,但文件無法使用,因為編寫它的文件要么尚未完成,要么尚未釋放它的句柄。 在這種情況下,需要推遲處理或進行其他檢查以確定是否已准備就緒並不罕見。
在這種情況下,可能是重新啟動'修復'的東西,但只是因為副作用它會釋放句柄或延遲處理,所以當你的代碼再次嘗試時,一切都很好。
僅當您提供錯誤的路徑時才會發生這種情況。 我遇到了同樣的問題。
最初我直接運行文件節點xyz.js和所需的靜態文件在同一個存儲庫中。 但是,當我執行npm start時,代碼拋出了錯誤:
fs.js 495
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
**Error: ENOENT, no such file or directory**
然后我移動靜態資源,重命名路徑,它工作。 希望這可以幫到你。
文件擴展名可以輸入兩次,因此找不到。 使用命令提示符導航到文件目錄,並獲取該目錄中的文件列表
命令:
dir
要么
ls
獲取實際的文件名並使用它。 在我的情況下,我已將文本文檔保存為“readMe.txt”,並在命令提示符下顯示為“readMe.txt.txt”。 保存時我沒有附加文件擴展名,這就產生了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.