У меня есть несколько методов, которые используют модуль request
для получения изображений по URL-адресам и возвращает его как Promise, он работает, но когда изображение не найдено, он отклоняет обещание с кодом состояния 404. Я посмотрел на это предупреждение, и сказано, что для обработки отклонения вы должны настроить обратный вызов catch после then (), но я не использую then (), я использую async / await.
Это код для получения картинка:
/**
* Returns picture from S3
* @param {String} filename Name of the file with extension
* @returns {String} Base64 string of the file
*/
getPictureFromS3: function (filename) {
return new Promise((resolve, reject) => {
let url = this.getURLFromS3(filename);
request(url, (err, res, body) => {
if (err) reject(err);
if (res.statusCode !== 200) {
reject(`Invalid status code <${res.statusCode}>`);
}
resolve(new Buffer.from(body).toString('base64'));
});
});
}
И вот как я называю метод:
try{
socket.on('server get pictures', () => db.getPictures(data=>{
if(data!==null){
data.forEach(async e=>{
let picture = await utils.getPictureFromS3(e.getFilename());
});
}
}));
}catch(err){
console.log(err);
}
Полное предупреждение:
(node:256) UnhandledPromiseRejectionWarning: Invalid status code <404>
(node:256) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which
was not handled with .catch(). (rejection id: 1)
(node:256) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Использование узла v10.14.2.