Node TypeError 충돌 앱 방지

cud_programmer

간단한 request.js http 클라이언트를 사용하여 때때로 간단한 TypeError것이 전체 노드 앱을 충돌시킬 수 있음을 알았습니다 . 예를 들면 다음과 같습니다.

request('http://www.google.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
       console.log(body) // Print the google web page.
    }
})

이제 Google이 응답하지 않고 연결이 중단 된 후 시간이 초과되는 가상 (Google의 경우!) 상황을 살펴 보겠습니다. 이 코드 response는 정의되지 않았으므로 response.statusCode읽을 수 없으므로 단순히 노드 앱을 충돌시킵니다 . 이것은 이벤트 루프로 버블 링되고 오류와 함께 충돌을 트리거합니다.

TypeError: Cannot read property 'statusCode' of undefined

이를 방지 할 수있는 가장 간단한 방법은 무엇입니까? 예를 들어 error확인하기 전에 의 값에 대한 확인을 추가 할 수 있습니다 statusCode.

request('http://www.google.com', function (error, response, body) {
    if (!error) {
        if (response.statusCode == 200) {
          // do stuff
        }
    }
})

하지만 가능하면 앱에 불필요한 줄을 추가하지 않는 것이 좋습니다. 나는 여기서 명백한 것을 놓치고 있을지도 모른다! 어떤 포인터라도 대단히 감사합니다. 감사.

mynameisdaniil

짧은 대답 : 이것이 당신이 얻는 것입니다. 자세한 답변 :

  • 항상 오류 확인
  • 항상 데이터 확인

따라서 다음과 같은 것은 꽤 괜찮습니다.

if (!error && body) {
  //do whatever you want with your body
}

if (!error && response) {
  //do whatever you want with response
}

객체에 접근하기 전에 객체가 존재하는지 확인해야합니다 (객체의 존재가 보장되지 않는 경우). 또한 maybe2 모듈을 살펴보십시오 . 이 모듈을 사용하면 다음과 같이 작성할 수 있습니다.

if (!error && maybe(response).getOrElse({}).statusCode == 200) {
  //your code here
}
  • node.js 클러스터 모드, forever같은 수퍼바이저 모듈 및 / 또는 앱 앞에 nginx와 같은로드 밸런싱 프록시를 사용합니다. 이렇게하면 하나의 요청이 실패하면 다른 요청이 앱의 다른 인스턴스에 의해 이행됩니다.
  • 클라이언트 측에서 오류를 처리하고 실패시 요청을 반복 할 준비를하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

앱 충돌을 방지하는 방법

분류에서Dev

PushBots 앱 충돌

분류에서Dev

AdMob 충돌 앱

분류에서Dev

selectableItemBackground 충돌 앱

분류에서Dev

stringForKey 충돌 앱

분류에서Dev

앱 충돌 .... NullPointerException

분류에서Dev

BaseAdapter 앱 충돌

분류에서Dev

토스트 메시지 충돌 앱

분류에서Dev

Android 앱에서 Google지도 충돌

분류에서Dev

일시 중지시 Android 앱 충돌

분류에서Dev

Kivy 앱 충돌 : "응답하지 않음"

분류에서Dev

이미지 선택시 앱 충돌

분류에서Dev

앱 충돌을 방지하는 글로벌 방법?

분류에서Dev

Firebase에 충돌이 표시되지 않고 Android 앱이 충돌 함

분류에서Dev

NFC enableForegroundDispatch 충돌 앱

분류에서Dev

editText로 앱 충돌

분류에서Dev

할 일 앱 충돌

분류에서Dev

onViewStateRestored 충돌 Android 앱

분류에서Dev

Android WebView 앱 충돌

분류에서Dev

onclick시 앱 충돌

분류에서Dev

객체가 null로 전달 될 때 React 앱 충돌을 방지하는 방법

분류에서Dev

Excel 2013 앱 충돌-지원되지 않는 브라우저

분류에서Dev

iBeacon이 감지되지 않으면 앱이 충돌 함-Swift iOS

분류에서Dev

Phonegap 앱에서 Vuex와 IAP 플러그인 간의 충돌 방지

분류에서Dev

앱이 충돌하지만 방법이 여전히 작동합니까?

분류에서Dev

String이 비어있을 때 앱 충돌을 중지하는 방법

분류에서Dev

앱 충돌과 사용자 종료를 구별하는 방법

분류에서Dev

조각의 방향이 변경되면 앱이 충돌 함

분류에서Dev

시작시 Flutter 앱 충돌을 잡는 방법