Как обрабатывать ошибки, используя драйвер Tedious с Node - PullRequest
0 голосов
/ 31 мая 2019

Проблема:

У меня постоянно возникают проблемы с опечатками в моих SQL-запросах, и утомительный драйвер мало помогает. Когда есть ошибки, он отлично работает, сообщая мне тип ошибки и что пошло не так, но трассировка стека никогда не содержит никаких файлов моего проекта. Это затрудняет отладку, особенно когда я делаю несколько запросов в одной и той же функции. В настоящее время я использую библиотеку mssql, но столкнулся с той же проблемой при непосредственном использовании tedious. Кроме того, mssql вообще не упоминается в стеке ошибок, поэтому я считаю, что это не проблема.

Что я пробовал:

  • Поиск проблем на утомительной странице GitHub
  • Добавлен conn.on('error') слушатель, который, похоже, ничего не делает.
  • Добавлено process.on() слушателей для 'uncaughtException' и 'unhandledRejection'.
  • Перенес инициализацию ConnectionPool в собственную функцию, чтобы попытаться поймать там ошибку. Не повезло.

Некоторые коды:

Вот простой пример того, что я использую для выполнения запросов:

async function dbConnect() {
  const conn = await new ConnectionPool(dbConfig).connect();

  conn.on('error', error => {
    console.error('*Connection Error:', error);
  });

  return conn;
}

async function runQuery() {
  const conn = await dbConnect();

  await conn.request().query(`SELECT Thing FROM Place`);
  await conn.close();
}

runQuery()
  .then(results => {
    console.log(results);

    process.exit(0);
  })
  .catch(error => {
    console.error(error);

    process.exit(1);
  });

Ошибка: An error message without the correct stack

Надеюсь, это возможно. Если нет, есть ли другой драйвер Node для SQL Server, который кто-то придумал?

Редактировать: добавлен прослушиватель ошибок при request

async function dbConnect() {
  const conn = await new ConnectionPool(dbConfig).connect();
  const request = new Request(conn);

  conn.on('error', error => {
    console.error('*Connection Error:', error);
  });

  request.on('error', error => {
    console.error('*Request Error:', error);
  });

  return request;
}

async function runQuery() {
  const request = await dbConnect();

  await request.query(`SELECT Thing FROM Place`);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...