【问题标题】:Express.js Not letting me handle errors: Exception has occurred: Error _runMicrotasks();Express.js 不让我处理错误:发生异常:错误 _runMicrotasks();
【发布时间】:2018-05-25 08:51:16
【问题描述】:

所以我在 Blizzard API Battle.Net 中查询一些信息、角色名称和他们所在的领域。当然,用户可以查询不存在的角色,所以暴雪会返回 404对我来说,我的 server.js 文件不知道如何处理它,即使我放置了一些东西来处理它。

相关server.js代码:

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);
        }
    });
});

我尝试通过向客户端发送一些内容告诉用户:Character DNE! 来处理任何不是 200 的内容,但是 vscode 给了我这篇文章标题中提到的一些红色错误代码(无论如何在 vscode 调试器中)。

当我从命令行尝试此操作时,只运行node server.js,当我单击搜索按钮时没有任何反应。我设置了断点,看起来该函数没有从服务器获得响应。所以无论如何都会发生 404,但我不知道如何处理它。

【问题讨论】:

    标签: javascript node.js http express


    【解决方案1】:

    尝试将您的app.listen 放置在您的app.post Express.js 在中间件功能中运行的下方/之后,这样您的监听就会阻塞所有前面的代码。

    【讨论】:

    • 这是不正确的。 listen() is provided by the Node Core API 和 Express 提供的中间件栈无关。一旦调用listen(),套接字将开始在指定的地址和端口上侦听传入连接。这样做不会阻塞在listen() 之后定义的任何路由处理程序。
    • @peteb 太棒了,感谢您的澄清。如果您可以提供并回答此问题,那将很有帮助。谢谢。
    猜你喜欢
    • 2017-04-05
    • 2015-12-26
    • 1970-01-01
    • 2012-01-20
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2014-01-08
    相关资源
    最近更新 更多