2016-12-26 13 views
1

응용 프로그램에서 AJAX 요청을 수행하는 데 isomorphic-fetch을 사용하고 있습니다. 내가 Promise.reject(response)으로 거부하는 경우처리 중에도 오류가 발생 함 콘솔

return callApi(callAPI).then(
    response => next(actionWith({ 
     response, 
     type: successType, 
     statusCode: 200 
    })), 
    error => error.json().then(errorObject => { 
     return next(actionWith({ 
      type: failureType, 
      statusCode: errorObject.statusCode, 
      error: errorObject.message || 'Something bad happened' 
     })); 
    }) 
); 

오류가있다는 것을 : 위의 기능은 다음 코드 조각에 의해 불려

import fetch from 'isomorphic-fetch'; 

function callApi({ endpoint, method, body, params = {} }) { 
    let route = generateRoute(endpoint, params); 
    return fetch(route, generateFetchOptions(method, body)) 
     .then(response => { 
      if (!response.ok) { 
       return Promise.reject(response); 
      } 

      return response.json(); 
     }); 
} 

: 내 API를 미들웨어에서 나는 외부 리소스를 호출하는 다음과 같은 기능을 가지고 오류 처리기에서 처리하지만 오류가 브라우저 콘솔 (내 경우 Chrome)에 거품을 일으키는 경우도 있습니다. 여기

은 ( api.js:34callApi 메서드의 두 번째 라인) 무슨 일이 일어나고 보여줍니다 콘솔에서 스크린 샷입니다 : (? 아마 모든 브라우저에서)

console log

+0

? 당신이 거절하는'response'는'Error'조차도 아닙니다. – Bergi

+0

Promise.reject로 반환하는 모든 오류. 나는 그들을 처리하지만 어떻게 든 콘솔에 도달 할 수 있습니다. –

+2

콘솔의 스크린 샷을 게시하십시오. 응답 객체는 오류가 아니므로 콘솔에 표시해서는 안됩니다. 그러나 코드에 오류가 발생하여 오류가 표시 될 수있는 많은 다른 사항이 코드에 있습니다. – Bergi

답변

2

이것은 일반적인 동작입니다 때 HTTP 요청 도중 오류가 발생합니다 (링크 된 이미지를 찾을 수 없거나 XHR에 문제가 발생하지 않음). 아무런 문제가없는 경우 이러한 오류를 처리하는 경우 항상이 콘솔에 기록됩니다. 이 동작을 억제 할 방법이 없습니다.

참고 : 특히 오류