Удалить сообщения об ошибках из консоли браузера (Angular HttpClient)

#angular #error-handling #rxjs #angular-httpclient #angular-errorhandler

#angular #обработка ошибок #rxjs #angular-httpclient #angular-errorhandler

Вопрос:

Есть ли способ с помощью HttpClient удалить сообщения об ошибках из консоли браузера?

Мой текущий код выглядит следующим образом:

   getStuff(stuffId: string): Observable<Stuff[]> {
    return this.httpClient.get<Stuff[]>(this.stuff()   stuffId   '/stuff/').pipe(
      catchError((err) => {
        console.log(err.status);
        if (err.status === 404) {
          console.log('Not found');
        }
      })
    );
  }
  

Мой console.log(‘Не найден’) в инструкции if выполняется, но он по-прежнему выдает стандартную ошибку на консоль.

Моя цель: ничего красного в консоли 🙂


Обновить:

Ошибки возникают не в Firefox, а в Google Chrome. Почему ..?

Ответ №1:

Стандартная ошибка, которую вы видите в консоли, на самом деле не из кода. Это из сети, из-за ошибки API. Браузеры учитывают и понимают стандартные коды ответов http. Таким образом, всякий раз, когда любой http-запрос возвращает какой-либо код ответа, отличный от 2xx, они считают это ошибкой и отображают его красным цветом в консоли. К сожалению, вы не можете удалить его. Это делается с помощью браузера.

Комментарии:

1. Вы уверены в этом? Должен быть способ игнорировать ошибку в коде, чтобы ничего не выбрасывалось в консоль, или нет?

2. Нет. Единственный способ сделать это — ответить кодом 2xx из API. Просто взгляните на вкладку сеть. Вы увидите там такую же красную подсветку и для этого API, который выдал код, отличный от 2xx. Хотя вы можете отфильтровать эти ошибки в консоли, используя опцию фильтра в верхней части консоли.

3. Значит, нет способа удалить ошибки с помощью кода? Firefox не выдает эти ошибки, только my console.log (‘Не найден’). Они отображаются в Chrome и Safari, хотя .. 🙁

4. Да. Chrome и Safari ведут себя по-разному, как я уже сказал.

Ответ №2:

Обратный вызов к catchError должен возвращать наблюдаемое, поэтому вы можете просто вернуть, например, EMPTY , которое просто завершается и ничего не выдает:

 import { EMPTY } from 'rxjs';

...

catchError((err) => {
  console.log(err.status);
  if (err.status === 404) {
    console.log('Not found');
  }
  return EMPTY;
});
  

Комментарии:

1. Ошибки по-прежнему выдаются. Я уже пробовал «НИКОГДА». К сожалению, безуспешно..

2. Использование EMPTY просто проигнорирует ошибку. Вы уверены, что это не другая ошибка где-то еще, где у вас есть subscribe() вызов без какого-либо обработчика ошибок?

3. Нет, я почти уверен. Я подписываюсь на observable в другом месте, в котором уже реализована обработка ошибок.