JavaScript LinuxWindowsmacOS

JavaScript — Uncaught (in promise) — необработанная ошибка в async-коде

  • Обновлено
  • Чтение ≈ 1 минута

Краткий ответ

Ошибка в Promise без catch попадает в консоль как Uncaught (in promise). Оборачивайте await в try/catch и добавляйте .catch().

В этой статье
  1. Что означает ошибка
  2. Причины и признаки
  3. Пошаговое решение
  4. Если проблема осталась

#Что означает ошибка

Сообщение
Uncaught (in promise)

Ошибка в Promise без catch попадает в консоль как Uncaught (in promise). Оборачивайте await в try/catch и добавляйте .catch().

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Нет catchPromise отвергается без catch.Добавьте обработку в точку вызова.
Забыт awaitВызов Promise не ожидается и теряется.Возвращайте/ожидайте результат асинхронной функции.
Ошибка сетиЗапрос к сети отклоняется.Обработайте сеть и отдельно response.ok.
Ошибка в thenИсключение возникает внутри then.Перехватите отказ в цепочке и сохраните стек.

#Пошаговое решение

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

#Если проблема осталась

Если «JavaScript — Uncaught (in promise) — необработанная ошибка в async-коде» повторяется, сохраните время, состояние подключения и точный текст ошибки. Не меняйте сразу несколько настроек — иначе станет трудно понять, какое действие повлияло на результат.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.