Необработанный отказ от обещания внутри улова
Внутри улова появляется следующая ошибка:
BlockquoteUnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за выброса внутри асинхронной функции без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью.catch().
Это код, который его вызывает:
http({
method: 'post',
url: config.uri,
headers: headers,
data: data
}).then(function (response) {
resolve(response.data);
}).catch(function (error) {
console.log(error.response.data);
reject(error.response.data);
});
Вызов console.log внутри перехвата читает: {статус: 'ОШИБКА', код: 'EMAIL_FAIL', сообщение: 'Ошибка отправки электронной почты' }
Этот код, вызывающий функцию:
router.post('/declaration', csrf, async function (req, res, next) {
let reqId = generateReqId();
const ref = reqId.split('-')[0];
let data = buildSubmission(fakeSub, res.locals.locale.toUpperCase(), ref);
let headers = { ref: data.ref, reqId: reqId };
const response = await callAPI.submitApplication(data, headers);
casaApp.endSession(req).then(() => {
res.status(302).render('../views/pages/confirmation.njk');
}).catch((err) => {
console.log(err);
res.status(302).render('../views/pages/exit-error.njk');
});
});
Почему я получаю это? Я хочу, чтобы код вернулся в вызывающий сегмент, который решит проблему. Какие-либо предложения?
1 ответ
Решение
Вы не поймаете ошибки из запроса callAPI.submitApplication:
router.post('/declaration', csrf, async function (req, res, next) {
const reqId = generateReqId();
const ref = reqId.split('-')[0];
const data = buildSubmission(fakeSub, res.locals.locale.toUpperCase(), ref);
const headers = { ref: data.ref, reqId: reqId };
try {
const response = await callAPI.submitApplication(data, headers);
await casaApp.endSession(req);
res.status(302).render('../views/pages/confirmation.njk');
} catch(e) {
console.log(err);
res.status(302).render('../views/pages/exit-error.njk');
}
});