2017-12-13 27 views
1

(중요하다면 Express와 함께 Blizzard.js npm 패키지를 사용하고 있습니다.)Express.js 서버 오류 처리 (404). 서버 오류가 발생하여 예외를 throw하기도 전에

나는 웹 기반 웹 서비스를 구축하고 있습니다. 사용자가 특정 비디오 게임 (플레이어가 만든 프로파일) 인 캐릭터의 통계를 검색 할 수있게 해주는 앱입니다. 존재하지 않는 사용자 이름이 있기 때문에 사용자가 검색하면 내 앱이 처리 할 수 ​​있는지 확인하려고합니다. 계정이없는 사용자 이름 내가 대신 내 서버 기능을보고 그것을 처리시키는의, 존재하지 않는 사용자 이름에 대한 쿼리

는, 서버가 밖으로 괴물과 node.js이라고 만있어 파일에 몇 가지 오류가 발생합니다 (라인 369에서 콘텐츠를 누가 runMicrotasks();입니다) . 나는 디버거에서 두 번 "다시 시작"해야한다는 것을 알아 차렸다. 그러나 전체 서버를 손상시키지 않습니다. 사용자 측에서 아무 일도 일어나지 않습니다.

그러나 내 서버에서는 문자가 존재하지 않는다고 가정하고 사용자에게이를 말함으로써 200이 아닌 것을 처리하도록합니다. (나도 알아, 게으른. 나는 404가있는 경우에만 그렇게해야합니다. 던져졌지만, 나는이 버그를 지나치지 않았다.) 내 if-statement는 이것을 잡아 내야 만한다. 그러나 call 상에 breakpoint를 설정했는데 breakpoint에도 영향을 미치지 않는다. 서버 호출이 실행되지 않습니다. 내 서버에 대한 호출을

코드 :

$scope.searchCharacter = function(){ 
    $scope.charName = "obviouslyInvalidCharacterName"; 
    $scope.selectedRealm = {name: "Dalaran", id: 66}; 
    var request = {name: $scope.charName, realm: $scope.selectedRealm};  
    $http.post('/searchCharacter', request) 
    .then(function(response) { 
     //request body 
    }); 
} 

서버 전화 :

app.post('/searchCharacter', jsonParser, function (req, res) { 
    blizzard.wow.character(['profile', 'stats', 'items', 'statistics'], { origin: 'us', realm: req.body.realm.name, name: req.body.name }) 
    .then(response => { 
     if(response.status != 200){ 
      res.send("That character doesn't exist! Please enter a valid character name."); 
     } else { 
      res.send(response.data); 
     } 
    }); 
}); 

오류 메시지 : 블리자드와

Error: 
Exception has occurred: Error 
Error: Request failed with status code 404 
    at createError (c:\Users\RDubz\Documents\Interviews\EagleDream 12-7-17\Project\node_modules\blizzard.js\node_modules\axios\lib\core\createError.js:16:15) 
    at settle (c:\Users\RDubz\Documents\Interviews\EagleDream 12-7-17\Project\node_modules\blizzard.js\node_modules\axios\lib\core\settle.js:18:12) 
    at IncomingMessage.handleStreamEnd (c:\Users\RDubz\Documents\Interviews\EagleDream 12-7-17\Project\node_modules\blizzard.js\node_modules\axios\lib\adapters\http.js:191:11) 
    at emitNone (events.js:72:20) 
    at IncomingMessage.emit (events.js:166:7) 
    at endReadableNT (_stream_readable.js:921:12) 
    at nextTickCallbackWith2Args (node.js:442:9) 
    at process._tickCallback (node.js:356:17) 

답변

0

익숙하지 않은,하지만 당신은 잠재적 인 처리되지 않은이 거절을 약속한다. .then() 뒤에 .catch(console.log)을 수행하면 예외가 발생했는지 여부를 확인할 수 있습니다.

API의 뉘앙스에주의를 기울이지 않아도됩니다. (또는 설명서가 좋지 않음).

예를 들어, 네이티브 가져 오기 API 오류 상태 코드에서 오류/거부가 발생하지 않지만이 블리자드에서 수행 할 수 있습니까? 그냥 짐작 하셔서 확인해보십시오! :)