Что делать, если сообщение об ошибке API не определено?

Если вход выполнен успешно, я не получаю сообщения об ошибке. Моя проблема в том, что если сообщение об ошибке не получено, значение data.error.message не определено, и программа вылетает. Как я могу это решить?

 if (data.error.message === 'EMAIL_NOT_FOUND'){
      setError({
        title: "EMAIL_NOT_FOUND",
        message: "This email address is not registered.",
      });
      setIsLoading(false);
      return;
    }
    if (data.error.message === 'EMAIL_NOT_FOUND' && data.error.message !== undefined){
      setError({
        title: "EMAIL_NOT_FOUND",
        message: "This email address is not registered.",
      });
      setIsLoading(false);
      return;
    }

Я тоже пробовал это, но та же ошибка.

Вы уверены, что данные, error.message не определены? Возможно, в вашем случае data.error не определен.

Amirhossein 24.11.2022 19:57

Если вход в систему выполнен успешно, с сервера не приходит сообщение об ошибке, и поэтому data.error.message не определено. Если есть сообщение об ошибке, это работает. Тем не менее, я хочу обработать оба случая.

Adam 24.11.2022 20:01

Не могли бы вы попробовать это? if (data !== undefined && data.error !== undefined && data.error.message === 'EMAIL_NOT_FOUND')

Amirhossein 24.11.2022 20:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
239
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вероятно, вы получаете ошибку, потому что пытаетесь прочитать объект, который не определен.

Вы можете изменить свое условие для обработки случая, когда error не определено:

 if (data?.error?.message && data.error.message === 'EMAIL_NOT_FOUND'){
   ...
 }

Таким образом вы убедитесь, что error и message существуют и не определены.

На самом деле это javascript без машинописного текста. Просто попробуйте это в консоли браузера и убедитесь, что это работает.

Oleg Brazhnichenko 24.11.2022 20:05

Извини. Ты прав. Пожалуйста, просто отредактируйте, чтобы я мог отменить свой голос.

Amirhossein 24.11.2022 20:08

Другие вопросы по теме