【问题标题】:How to send response error code in nodejs如何在nodejs中发送响应错误代码
【发布时间】:2020-05-12 04:03:47
【问题描述】:

我想知道如何在 nodejs 中发送错误代码作为响应。 Promise 中的错误未在 NodeJS/Express 中的响应对象中发送任何错误

module.exports.providerData = function (reqUrl, query) {
  return new Promise(async function (resolve, reject) {
    try {
      var validUrl = checkValidParamters(reqUrl, query);
      if(validUrl != true){
       throw new Error('failed');
      }
      else{
        sendcountry = countryjson.filter(function (send) {
          return send.country_name == param_sendcountry;
        })
        var provider_sendcncode = sendcountry[0].country_code;
        var receive = countryjson.filter(function (pr) {
          return pr.country_name == param_receivecountry;
        })
        var valid = true;
        var valid_obj = { validstatus: valid};
        resolve(valid_obj);
      }
    }
    catch (err) {
     reject(err);
    }
  });

}

在 app.js 中

router.get('/', function (req, res, next) {
  if (getcountries == null && getcurrencies == null && getproviders == null) {
            util.providerData(req.originalUrl, req.query).then(obj => {
              res.render("corridor.ejs");
            }).catch(err=>{
              res.status(401).send({ error : err.message });
            })
  }
  else {
    console.log('just return');
          util.providerData(req.originalUrl, req.query).then(obj => {
              res.render("corridor.ejs");
            }).catch(err=>{
              res.status(401).send({ error : err.message });
            })
  }
});

如果导出函数返回 false/error,我需要捕获错误响应 res.status(401).send({ error : err.message });

【问题讨论】:

  • 据我所见,代码似乎没问题,应该可以工作。哪个部分失败了?
  • @varunagarwal 如果导出函数返回 validUrl 为 false,我会将错误捕获为“失败”,在 app.js 中它应该 res.status(401).send({ error : err.message }) ,未能发送响应状态
  • 基本上您的客户端在进行 api 调用时没有收到401 错误状态?
  • @varunagarwal 是的
  • 发布checkValidParamters() 代码,也可以使用调试器来查找问题,或者只使用console.log(validUrl) 来检查您实际得到了什么。

标签: javascript node.js express


【解决方案1】:

你的承诺没有解决任何问题。要解决,您只需简单地返回您的回复。

router.get('/', function (req, res, next) {
   if (getcountries == null && getcurrencies == null && getproviders == null) {
        return util.providerData(req.originalUrl, req.query).then(obj => {
          return res.render("corridor.ejs");
        }).catch(err=>{
          return res.status(401).send({ error : err.message });
        })
  }
    else {
       console.log('just return');
       return util.providerData(req.originalUrl, req.query).then(obj => {
          return res.render("corridor.ejs");
        }).catch(err=>{
          return res.status(401).send({ error : err.message });
        })
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2018-10-03
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    相关资源
    最近更新 更多