【发布时间】: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