微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法访问catch的全局范围?

如何解决无法访问catch的全局范围?

在Node / Express应用程序中,我有一个检查2台服务器的运行状况的函数,还有一个封闭的函数,该序列对调用进行序列化,期望大多数时间我只需要进行1遍检查。

在检查功能中,有时会出现ECONNRESET错误,并且(当前)将其扔到封闭功能catch块中。

但是,我看到的问题是我所期望的闭包-带有全局和函数局部值-似乎不存在:我的全局Winston实例为null,并且得到了TypeError: gLog is not a function。我的期望是无效的还是这里发生了更大的失败?我应该通过取消整个过程来处理此错误吗?

async function checkHealth(req,res,next) {
  let version = req.query.version || 0;
  let upHost = '';
  if (req.hPair) {
    try {
      upHost = await hStatus.check(req.transID,version,req.hPair.preferred);
      if (upHost) {
        req.hHost = upHost;
      } else {
        req.hHost = await hStatus.check(req.transID,req.hPair.offside);
      }
    } catch (e) {
      glog.error(`${req.transID} Host healthcheck error: ${inspect(e)}`);
      req.hstatus = 500;
    }
  }

  if(req.hstatus) {
    res.status(req.hstatus).end();
  } else {  
    next();
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。