Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在nodejs中发送响应错误代码_Javascript_Node.js_Express - Fatal编程技术网

Javascript 如何在nodejs中发送响应错误代码

Javascript 如何在nodejs中发送响应错误代码,javascript,node.js,express,Javascript,Node.js,Express,我想知道如何在nodejs中发送promise中的错误代码作为响应。NodeJS/Express中承诺中的错误未发送响应对象中的任何错误 module.exports.providerData = function (reqUrl, query) { return new Promise(async function (resolve, reject) { try { var validUrl = checkValidParamters(reqUrl, query);

我想知道如何在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 });
            })
  }
});

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

您的承诺无法解决任何问题。要解决这个问题,只需返回您的响应即可

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 });
        })
  }
});

就我所见,代码看起来不错,应该可以工作。哪个部分失败?@varunagarwal如果导出函数返回validul为false,我将捕获错误为“Failed”,在app.js中它应该res.status(401).send({error:err.message}),未能发送响应状态基本上,您的客户端在进行api调用时未收到
401
错误状态?@varunagarwal yespost
checkvalidParameters()
code,也可以使用调试器查找问题,或者仅使用
console.log(validur)
检查实际得到的内容。