您好,我試圖了解以下代碼中發(fā)生的情況:import fs from "fs";import util from "util";import split2 from "split2";async function main() { const files = await fs.promises.readdir(".."); for (const f of files) { const s = fs.createReadStream("../" + f); const ss = s.pipe(split2()); s.on("error", (err) => { console.log(err); }); for await (const l of ss) { } console.log(f); } console.log("Returning"); return "Done";}main();它基本上讀取目錄中的每個文件并迭代每個文件的行(通過使用 forawait 語法將可讀流通過管道輸送到 split2 庫中。問題是,當文件確實是目錄時,createReadStream 失?。S后什么也沒有發(fā)生)奇怪的是,似乎一個錯誤導致主函數(shù)默默退出并在錯誤之前僅顯示幾個文件名。.gitignoreapp.js[Error: EISDIR: illegal operation on a directory, read] { errno: -21, code: 'EISDIR', syscall: 'read'}如果我只是評論await for 循環(huán),我會得到以下輸出。.gitignoreapp.jsbusinesscomponentsconfigenv.skeletronnode_modulespackage-lock.jsonReturning[Error: EISDIR: illegal operation on a directory, read] { errno: -21, code: 'EISDIR', syscall: 'read'}[Error: EISDIR: illegal operation on a directory, read] { errno: -21, code: 'EISDIR', syscall: 'read'}[Error: EISDIR: illegal operation on a directory, read] { errno: -21, code: 'EISDIR', syscall: 'read'}[Error: EISDIR: illegal operation on a directory, read] { errno: -21, code: 'EISDIR', syscall: 'read'}[Error: EISDIR: illegal operation on a directory, read] { errno: -21, code: 'EISDIR', syscall: 'read'}[Error: EISDIR: illegal operation on a directory, read] { errno: -21, code: 'EISDIR', syscall: 'read'}[Error: EISDIR: illegal operation on a directory, read] { errno: -21, code: 'EISDIR', syscall: 'read'}[Error: EISDIR: illegal operation on a directory, read] { errno: -21, code: 'EISDIR', syscall: 'read'} 這確實是完整的文件列表,并且各個錯誤不會停止外循環(huán)。我在 Ubuntu 機器上使用節(jié)點 v14.0.0 運行它。知道發(fā)生了什么事嗎?我真的迷路了:-D
async for 循環(huán)導致函數(shù)靜默終止
慕哥6287543
2023-08-10 14:39:40