#Что означает ошибка
Uncaught (in promise)
Ошибка в Promise без catch попадает в консоль как Uncaught (in promise). Оборачивайте await в try/catch и добавляйте .catch().
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Нет catch | Promise отвергается без catch. | Добавьте обработку в точку вызова. |
| Забыт await | Вызов Promise не ожидается и теряется. | Возвращайте/ожидайте результат асинхронной функции. |
| Ошибка сети | Запрос к сети отклоняется. | Обработайте сеть и отдельно response.ok. |
| Ошибка в then | Исключение возникает внутри then. | Перехватите отказ в цепочке и сохраните стек. |
#Пошаговое решение
- Найдите отвергнутый PromiseОткройте F12 → «Консоль» и найдите
Uncaught (in promise), затем перейдите к строке кода по ссылке стека. В Node.js посмотрите причину и файл в выводе терминала. Запишите текст исходного исключения — само сообщение о необработанном Promise не раскрывает его причину. - Добавьте обработку там, где ожидается ошибкаЕсли используется
await, поместите операцию вtry/catchи выведите безопасное сообщение с причиной; если.then(), добавьте.catch(err => ...). Не оставляйте пустойcatch {}: исключение должно быть показано пользователю или зафиксировано в журнале без паролей. - Проверьте асинхронные вызовы и возвратыУбедитесь, что функция, возвращающая Promise, действительно ожидается через
awaitили возвращается вызывающему коду. Приfetchотдельно проверьтеresponse.ok: HTTP 404/500 сам по себе не отклоняет Promise fetch. ДляPromise.allпредусмотрите обработку отказа любой из задач. - Проверьте положительный и отрицательный сценарииПовторите действие при исправном сервере и при контролируемой ошибке сети; приложение должно показать понятное уведомление, а консоль — не содержать необработанных отказов. Не используйте глобальный обработчик
unhandledrejectionкак замену исправлению конкретного вызова.
#Если проблема осталась
Если «JavaScript — Uncaught (in promise) — необработанная ошибка в async-коде» повторяется, сохраните время, состояние подключения и точный текст ошибки. Не меняйте сразу несколько настроек — иначе станет трудно понять, какое действие повлияло на результат.