Межплатформенное ПО для асинхронных операций мобильных приложений Azure
У меня есть экспресс-приложение, работающее с мобильными службами Azure.
// production error handler
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
ptlogger.error(err.message);
});
проблема в том, что этот фрагмент не вызывается, когда внутри обратного вызова результата запроса, например
router.get('/id/:subscriberid', (req, res, next) => {
var mssqlObject = req.azureMobile.data;
var query = { sql: strSql };
mssqlObject.execute(query).then( (results) => {
console.log(unDeclaredVariable); // should hit the error handler here
});
});
он бы попал в промежуточное ПО, если бы он был вне асинхронного вызова mssqlObject
Примечание: я не хочу использовать блок.catch, потому что у меня есть несколько других сценариев, где я хотел бы решить проблему раз и навсегда.
Заранее спасибо.
1 ответ
Решение
На самом деле это не проблема мобильных приложений Azure, а скорее проблема Node.js.
Добавьте следующее в ваш код:
.catch((error) => {
console.log(error);
throw error;
});
Таким образом, вы можете отловить ошибку как локально, так и на глобальном уровне.