2017-12-13 1 views
1

を処理するために許可されています前に、例外がスローされます(それが重要ならば、私はエクスプレスと並行してBlizzard.js NPMパッケージを使用しています。)Express.jsサーバーのエラー処理(404)。 Serverは、フリークアウトし、私もエラー

私はWEB-を構築していますユーザーが特定のビデオゲームの統計情報を検索できるようにするアプリケーション(プレーヤー作成のプロファイル) 、存在しないユーザー名があるため、ユーザーが検索した場合にアプリが処理できることを確認しようとしていますアカウントを持たないユーザー名。私が代わりに私のサーバー機能を確認し、それを処理させるの、存在しないユーザー名を照会

は、サーバはフリークアウトとnode.jsと呼ばれるだけのファイルにいくつかのエラーをスローします(ライン369でコンテンツ誰runMicrotasks();です) 。私は私のデバッガで "再開"を2回押しなければならないことに気づいた。ただし、サーバー全体がクラッシュすることはありません。ユーザー側では何も起こりません。

私のサーバコールでは、文字が存在しないと仮定してそれをユーザに伝えることによって、200ではないものを処理するようにしています(私は知っています、怠け者です。投げられましたが、私はこのバグを過ぎていません)。私のif文がこれをキャッチするはずですが、コール上とコール内にブレークポイントを設定していますが、ブレークポイントにも衝突しません。サーバコールは決して起動しません。私のサーバーへの呼び出しを行う

コード:

$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のエラーステータスコードではエラー/拒否は発生しませんが、このブリザードのコードではおそらくかかりますか?ちょうど推測、それをチェックし、参照してください! :)

関連する問題