Node.js ошибка в экспресс-ответе, который не был получен

#node.js

#node.js

Вопрос:

Вот фрагменты index.js и роутер.

index.js

 .....

let defaultRoute = require('./routes/default')
app.use('/', defaultRoute)

app.use((err, req, res, next) => {
res.status(500);
res.json(err);
.....
 

default.js

 .....

router.get ('/', function (req, res){

    sql.connect(sqlConfig, function(err) {
        if(err) console.log(err);

        var request = new sql.Request();
        var sqlParams = [];

......
 

Если несколько потоков выполнят вызов, как только я нажму sql.connect во втором фрагменте кода, выдается ошибка, которая перехватывается прослушивателем исключений в index.js . Я вижу ошибку, но ответ никогда не выдает ошибку. Куда это происходит? Есть ли место для node.js ошибки ?

Кстати, ошибка, которую я вижу только в режиме отладки, — «Ошибка: глобальное соединение уже существует. Сначала вызовите sql.close().n в Object.connect’. Я знаю, что мне нужно использовать пул соединений. У меня есть готовый код. Мне просто интересно, что переписывает ответ или что поглощает мою ошибку.

Причина моего любопытства в том, что с таким кодом я все равно не вижу ошибки, выдаваемой в любом случае, я вижу ошибку, когда у меня есть точка останова. Но тот же код в Kubernetes вызывает проблемы с Dynatrace с подробной записью ошибок. Просто пытаюсь понять, прежде чем я исправлю свой код с помощью пула соединений.

Комментарии:

1. Это известно как условие гонки. Ошибка не требует пояснений, закройте соединение, если оно вам не нужно, и снова откройте его при необходимости.

2. Не рекомендуется создавать соединение для каждого запроса, вам следует создавать соединение при запуске приложения, а затем повторно использовать его для каждого запроса.

3. Я ценю ваши ответы. Как я уже сказал, я понял это. Мой вопрос в том, почему с помощью ‘res.json (err)’ клиент не получает его?