所以,我做了这个愚蠢的错字,我花了很长时间才找到它,因为我总是从执行的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"。
提前感谢任何解释/建议/帮助,这对我来说不再是一个问题,但这种行为真的让我感到困扰,我不知道应该在哪里举报。