Как поймать ошибку createReadStream в узле js?

#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') ?