2017-12-11 27 views
-1

私は、Blizzard API Battle.Netにいくつかの情報、キャラクター名、およびそれらのレルムを照会しています。ユーザーが存在しない文字を照会することは可能ですので、Blizzardは404を返します私と私のserver.jsファイルは、私はそれを処理するために何かを置くにもかかわらず、それをどうすればわからない。Express.jsエラーを処理させない:例外が発生しました:エラー_runMicrotasks();

Releveant server.jsコード:文字DNE!代わりvscodeは私にいくつかの赤のエラーコードを示します:私は、ユーザーに伝えるために、クライアントに何かを送信することにより、200ではないものを扱うようにしよう

var express = require('express'); 
var app = express(); 
var fs = require('fs'); 
var bodyParser = require('body-parser'); 
var jsonParser = bodyParser.json(); 
const blizzard = require('blizzard.js').initialize({apikey: "dummy"}); 
app.use(express.static(__dirname + '/Source')); 

//Listen on port 3000 
app.listen(3000, function() { 
    console.log("Launch successful. To access app, open your browser and insert the following URL into your address bar: http://localhost:3000/"); 
}); 


app.post('/buttonpress', jsonParser, function (req, res) { 
    blizzard.wow.character(['profile'], { 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 { 
      console.log(response.data); 
      res.send(response.data); 
     } 
    }); 
}); 

この投稿のタイトルで述べられている(とにかくvscodeデバッガで)。

コマンドラインからこれを試してみますと、node server.jsを実行しても、検索ボタンをクリックしても何も起こりません。私はブレークポイントを設定しており、関数がサーバーからの応答を得られないように見えます。だから、404は何が起きても起こっているが、私はそれをどう扱うかを考え出すことができない。

答えて

-2

あなたのapp.post Express.jsがミドルウェア機能で動作するように、その下に/ app.listenを配置してみてください。そうすれば、すべての先行コードがブロックされます。

+0

これは正しくありません。 ['listen()'はNode Core API(https://nodejs.org/dist/latest-v9.x/docs/api/http.html#http_server_listen)によって提供され、ミドルウェアスタックとは何の関係もありませんExpressによって提供されます。 'listen()'が呼び出されると、ソケットは着信接続に対して指定されたアドレスとポートでリッスンを開始します。これを行うと、 'listen()'の後に定義されたルートハンドラはブロックされません。 – peteb

+0

@petebよろしくお願いします。あなたがこの問題を提出して答えることができれば、それは役に立ちます。ありがとう。 –

関連する問題