簡體   English   中英

NodeJS fs.open在現有文件上失敗(不是路徑問題)

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

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