2017-12-11 3 views
-1

블리자드 API Battle.Net에 몇 가지 정보, 문자 이름 및 영역이 있는지 묻습니다. 사용자가 존재하지 않는 문자를 쿼리 할 수 ​​있으므로 블리자드가 404를 다시 던졌습니다. 나와 내 server.js 파일을 처리 할 수있는 무언가를 넣을지라도 무엇을해야할지 모릅니다.Express.js 오류 처리를 허용하지 않음 : 예외가 발생했습니다 : 오류 _runMicrotasks();

Releveant server.js 코드 : 문자 DNE! 대신 vscode이 좀 빨간색 오류 코드를 제공합니다 : I는 사용자에게 클라이언트에 무언가를 전송하여 (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 대단히 감사합니다. 이 문제를 제공하고 대답 할 수 있다면 도움이 될 것입니다. 감사. –

관련 문제