Nodejs 流未被错误事件侦听器捕获。我正在使用 npm Imap 模块,并且流错误没有在错误侦听器中捕获

Nodejs stream is not getting caught in error event listener. I am using npm Imap module and the stream error is not getting caught in error listener

提问人:Vishal Gupta 提问时间:10/17/2023 更新时间:10/17/2023 访问量:13

问:

imap.once('ready', function() {
  openInbox(function(err, box) {
    if (err) throw err;
    var f = imap.seq.fetch('1:3', {
      bodies: 'HEADER.FIELDS (FROM TO SUBJECT DATE)',
      struct: true
    });
    f.on('message', function(msg, seqno) {
      console.log('Message #%d', seqno);
      var prefix = '(#' + seqno + ') ';
      msg.on('body', function(stream, info) {
        var buffer = '';
        stream.on('data', function(chunk) {
          throw new Error('Custom Error');
        });
        stream.once('end', function() {
          console.log(prefix + 'Parsed header: %s', inspect(Imap.parseHeader(buffer)));
        });
      });
      msg.once('attributes', function(attrs) {
        console.log(prefix + 'Attributes: %s', inspect(attrs, false, 8));
      });
      msg.once('end', function() {
        console.log(prefix + 'Finished');
      });
    });
    f.once('error', function(err) {
      console.log('Fetch error: ' + err);
    });
    f.once('end', function() {
      console.log('Done fetching all messages!');
      imap.end();
    });
  });
});

该代码是 npm imap 的直接示例代码 https://www.npmjs.com/package/imap 所以,我只是从流数据事件中抛出一个自定义错误。

现在我想抓住我尝试过的错误

stream.on('error', function (err) {
    logger.info('Error');
});

但这并没有抓住它。另外,尝试尝试捕获块。 如何捕获和处理此错误

JavaScript 节点 .js 错误处理 事件侦听

评论


答: 暂无答案