我的諾言堆內深處,我做這樣的判斷:爲什麼node.js/bluebird吃了一個異常?
function isNameAvailable(name) {
return registry.getName(name)
.then(function(result) {
return result ? false : true;
});
}
不幸的是,這是一個編程錯誤,註冊表是不確定的。我的node.js應用程序沒有打印任何錯誤消息。任何想法爲什麼?我正在使用藍鳥許諾庫。
編輯
這裏的調用代碼。我剛剛添加了該捕獲物,但沒有捕獲任何東西。
function _checkAvailability(name) {
return isNameAvailable(name)
.then(function(isAvailabile) {
if (isAvailabile) {
return true;
}
else {
throw new NameNotAvailable('Name "' + name + '" is not available');
}
})
.catch(function(error) {
console.log('isNameAvailable threw', error);
throw error;
})
}
堆棧應該最終回滾到由express.js作爲HTTP請求的結果調用的函數。這是一個地方,我捕獲所有的錯誤和打印堆棧跟蹤(但顯然它不打印任何東西):
function createUser(req, res) {
userService.createUser(req.body)
.then(function(user) {
res.status(201).send(user);
})
.catch(function(error) {
log.trace(error);
res.status(500).send({'message': error.toString()});
});
}
你在哪裏調用'isNameAvailable'?它確實拋出。 – Bergi
你能分享更多的代碼嗎?由此我猜測問題是你沒有捕捉到錯誤。 –
請參閱我的編輯該代碼的調用者。 – Naresh