Nodejs мс sql необработанное обещание по истечении времени ожидания соединения - PullRequest
0 голосов
/ 13 июля 2020

Случай прост: я использую пакет npm ms sql для стабилизации sh соединений с базой данных с использованием метода объединения. Чтобы запустить пул, я просто делаю:

const poolPromise = new sql.ConnectionPool(config)
  .connect()
  .then(pool => {
    console.log('<---- POOL CONNECTED TO MSSQL ---->')
    return pool;
  }, error => {
    console.log('<---- DATABASE IS DOWN ---->')
  }).catch(err => {
    // HERE I LOG THE ERROR SOMEWHERE ELSE
    console.log('Database Connection Failed! Bad Config: ', err)
  });

module.exports = {
  sql, poolPromise
}

Теперь проблема в том, что сервер базы данных сейчас нестабилен. Иногда на время снижается. Это проблема, которую ребята из БД должны исправить, но я хочу иметь возможность уведомлять пользовательский интерфейс о том, что БД в какой-то момент не работает. Однако возникшее исключение не захватывается блоком catch. Он просто записывает в консоль nodejs следующее:

(node:2962) UnhandledPromiseRejectionWarning: ConnectionError: Failed to connect to <serverIP>:1433 - connect ETIMEDOUT <severIP>:1433
    at Connection.tedious.once.err (/project/node_modules/mssql/lib/tedious.js:239:17)
    at Object.onceWrapper (events.js:277:13)
    at Connection.emit (events.js:189:13)
    at Connection.EventEmitter.emit (domain.js:441:20)
    at Connection.socketError (/project/node_modules/tedious/lib/connection.js:1024:14)
    at /project/node_modules/tedious/lib/connection.js:868:25
    at Socket.onError (/project/node_modules/tedious/lib/connector.js:49:9)
    at Socket.emit (events.js:189:13)
    at Socket.EventEmitter.emit (domain.js:441:20)
    at emitErrorNT (internal/streams/destroy.js:82:8)
(node:2962) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:2962) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.


----

Ребята, у вас есть какие-нибудь идеи, как записать это конкретное событие, чтобы оно было правильно зарегистрировано. ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...