这是正常的bluebird / node.js / express错误处理吗?

时间:2017-08-19 13:35:24

标签: javascript node.js express promise bluebird

所以,我做了这个愚蠢的错字,我花了很长时间才找到它,因为我总是从执行的mongoose查询中得到一个空错误。我重新创建了一些更通用的行为。

var express = require('express');
var router = express.Router();
var Promise = require('Bluebird');

router.patch('/test', function (req, res, next){
    var testPromise = new Promise(function (resolve, reject) { resolve(); })
    .then(function(result){

        if(thisIsAnExampleTypo){}

        res.status(200).json({
            message: 'this will no be executed because of the typo',
            object: result
        });
    })
    .catch(function(err){
        //console.log(err);
        return res.status(500).json({
            title: 'This will execute because of the typo in the then-function',
            error: {message: 'but it will also crash the node.js server if I log the error before this return statement'}
        });
    });
});

上面的代码不会使服务器崩溃,但会执行catch-function。如果我取消注释console.log(err);行,它将使节点服务器崩溃,这对我来说没有意义。此外,它只会在我记录错误时崩溃,如果我将其console.log('test');它继续运行。

我在Node.js v8.1.4上,"表达":" ~4.14.0"和" bluebird":" ^ 3.5.0"。

提前感谢任何解释/建议/帮助,这对我来说不再是一个问题,但这种行为真的让我感到困扰,我不知道应该在哪里举报。

0 个答案:

没有答案