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

标签 javascript node.js express

我想知道如何在promise中发送错误代码作为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/错误,我需要捕获错误响应 res.status(401).send({ error : err.message });

最佳答案

你的 promise 并不能解决任何问题。要解决此问题,您只需简单地返回您的回复即可。

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

关于javascript - 如何在nodejs中发送响应错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55330528/

相关文章:

express - React-router Link 不使用服务器端渲染来渲染 href 属性?

mysql - 已超出 'max_user_connections' 资源

javascript - 使用 AJAX 和 PHP 登录时获取用户配置文件

python - Django和Node –如何运作?

javascript - SyntaxError : Cannot use import statment without a module, 类型错误 [ERR_UNKNOWN_FILE_EXTENSION]:Catch 22

javascript - 在 package.json 中设置环境变量以与 electro-reload 一起使用?

javascript - 未处理的 promise 拒绝 AVA

node.js - 在全局(单例)服务中使用特定于请求的上下文

javascript - 如何在大型React项目中找到死代码?

javascript - 一个 ajax 调用中有 2 个 url?