Angular 7 obserable не распознает ошибку должным образом - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь обработать ошибки из угловых HTTP-запросов, но я всегда получаю «ОШИБКУ ВНУТРЕННЕГО СЕРВЕРА» вместо сообщения

Когда я смотрю на сеть, я вижу ошибку 500 с сообщением:enter image description here

Но в коде он не перехватывается должным образом

Это мой сервис:

import { Injectable } from '@angular/core';
import { ConfigService } from '../config/config.service';
import { HttpClient, HttpErrorResponse } from "@angular/common/http";
import { Observable, throwError } from 'rxjs';
import { catchError, map } from 'rxjs/operators';

@Injectable({
  providedIn: "root"
})
export class ProxyService {
  private proxyUrl = ConfigService.settings.proxyServer.url + "/v1";

  constructor(private http: HttpClient) {}

  postProxy(url: string,form: FormData,responseType: any): Observable<any> {
    const requestUrl = `${this.proxyUrl}/${url}`;
    return this.http.post(requestUrl, form, {
      responseType: responseType
    })
    .pipe(
      map( (res) => res),
      catchError((e:any) => this.errorHandler(e))
    )
  }


  errorHandler(error: HttpErrorResponse){
    console.log('errorHandle',error);
    console.log('errorHandle message?', error.message);
    return throwError(error.error)
  }
}

И это то, что я делаю вмой запрос компонента:

   this.proxyService.postProxy(proxyRequestUrl, proxyRequestForm, responseType).subscribe(
      data => {
        this.result.type = "image";
        this.createImageFromBlob(data);
      },
      (error) => {

        console.error("error", error);
        console.log(this.errors);        
        // console.error(error);
        this.errors.push(error);


      },
      () => {
        console.log('finished')
        this.demoLoading = false;
      }
    )

В моем компоненте, который выполняет вызов API, я попал в часть ошибки, но у меня нет правильного сообщения: enter image description here

Кроме того, запрос никогда не попадает в конец файла в моем console.log («завершено»)

Я использую rxjs 6.3.3 и угловой 7.2

1 Ответ

0 голосов
/ 31 мая 2019

Основываясь на примере кода в документации , я думаю, что вы смотрите на неправильное свойство.

Я думаю, что тело ответа находится в свойстве error.error,так ваш обработчик будет выглядеть так:

errorHandler(error: HttpErrorResponse){
  console.log('errorHandle',error);
  console.log('errorHandle message?', error.error.message);
  return throwError(error.error)
}
...