Size: a a a

Node.js — русскоговорящее сообщество

2020 January 20

АТ

Андрей Тугунов in Node.js — русскоговорящее сообщество
Изредка летят такие ошибки в консоль:
источник

АТ

Андрей Тугунов in Node.js — русскоговорящее сообщество
unhandledRejection { error: true, promis: Promise { <rejected> true }, stack: undefined }
источник

АТ

Андрей Тугунов in Node.js — русскоговорящее сообщество
Отлавливаю через:

process.on('unhandledRejection', (err, p) => {
   console.error('unhandledRejection', {
       error: err,
       promis: p,
       stack: err.stack
   });
});
источник

АТ

Андрей Тугунов in Node.js — русскоговорящее сообщество
Как зачекать, откуда они идут?
источник

V

Victor in Node.js — русскоговорящее сообщество
error: true эт как
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Андрей Тугунов
Как зачекать, откуда они идут?
у тебя какой-то промис не обработан, написано же. Где-то забыт catch()
источник

АТ

Андрей Тугунов in Node.js — русскоговорящее сообщество
🤷‍♂️
источник

Ð

Ð in Node.js — русскоговорящее сообщество
такое бывает когда функии возвращающие промис запускают без await, ищи такие места
источник

АТ

Андрей Тугунов in Node.js — русскоговорящее сообщество
Спасибо
источник

V

Victor in Node.js — русскоговорящее сообщество
так а reason почему какой-то неадекватный
источник

V

Victor in Node.js — русскоговорящее сообщество
ищи в коде reject(true)
источник

Ð

Ð in Node.js — русскоговорящее сообщество
в смысле стек? ну наверное потому что в качестве ошибки возвращается не new Error, а true
источник

V

Victor in Node.js — русскоговорящее сообщество
не стек все равно должен быть, reason это агрумент который мы отдаем в reject
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Victor
не стек все равно должен быть, reason это агрумент который мы отдаем в reject
стек создает new Error, его конструктор, а не throw или reject
источник

Ð

Ð in Node.js — русскоговорящее сообщество
оно поэтому и тормозит кстати
источник

АТ

Андрей Тугунов in Node.js — русскоговорящее сообщество
Из-за создания New Error?
источник

АТ

Андрей Тугунов in Node.js — русскоговорящее сообщество
Как правильно режектить тогда?
источник

Ð

Ð in Node.js — русскоговорящее сообщество
так я же не говорю что это неправильно :)
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Неправильно - это когда исключения используются в бизнес логике и их создание является нормой работы сервера. Если промис используется не для исключения, в реджект можно положить все что угодно, кроме инстанса Еррора, но с переходом на async/await так делать уже не комильфо, так как приведет к ифам instanceof в блоке catch, и это вылезет непонятно где, в том числе в глобальный хендлер как тут
источник

V

Victor in Node.js — русскоговорящее сообщество
Ð
Неправильно - это когда исключения используются в бизнес логике и их создание является нормой работы сервера. Если промис используется не для исключения, в реджект можно положить все что угодно, кроме инстанса Еррора, но с переходом на async/await так делать уже не комильфо, так как приведет к ифам instanceof в блоке catch, и это вылезет непонятно где, в том числе в глобальный хендлер как тут
throw true 😂
источник