#javascript #node.js #fs #unzip
Вопрос:
Прошло 3 дня с трудом, чтобы поймать ошибку fs.createReadStream
. Есть файл, когда я пытаюсь его распаковать, он застрял при извлечении и не выдает никаких ошибок. Ниже приведен мой код для справки:
const unzip = require("unzip-stream"), function extractFileAndParse(file) { return new Promise(function (resolve, reject) { let extractedDirName = file.replace(".zip", ""); let unzipPipe = unzip.Extract({ path: `./directory/${extractedDirName}`, }); try { let stream = fs.createReadStream(`${directory}/${file}`).pipe(unzipPipe); stream.on("finish", function () { return resolve({ contentid: extractedDirName, }); }); stream.on("error", (err) =gt; { return reject(); }); } catch (error) { console.log("Error occurred while parsing the file: ", error); reject(); } }); }
Для обычного файла, как только извлечение завершено, он переходит к finish
событию и возвращает resolve(). Но не смог поймать ошибку, если она застряла (или я не знаю, не выдает ли она ошибку) при извлечении. Есть идеи, почему? Спасибо!
Комментарии:
1. Свяжите свои
error
finish
обработчики событий и событийunzipPipe
и повторите попытку.2. Кроме того,
stream.pipeline()
это лучшая альтернативаreadable.pipe()
, особенно при возникновении ошибок.3. @Ix1412 говорят
unzipPipe.on('finish')
иunzipPipe.on('error')
?