Я использую пакет nodemon npm для автоматического перезапуска приложения узла при обнаружении изменений файлов в каталоге. Сервер создается с использованием пакета express и http npm. Проблема в том, что когда сервер простаивает в течение нескольких минут, он выдает ошибку Ошибка: прочтите ECONNRESET Фактическая ошибка выглядит следующим образом:
events.js:167
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
Emitted 'error' event at:
at Connection._handleProtocolError (/home/abc/node_modules/mysql/lib/Connection.js:425:8)
at Protocol.emit (events.js:182:13)
at Protocol._delegateError (/home/abc/node_modules/mysql/lib/protocol/Protocol.js:390:10)
at Protocol.handleNetworkError (/home/abc/node_modules/mysql/lib/protocol/Protocol.js:363:10)
at Connection._handleNetworkError (/home/abc/node_modules/mysql/lib/Connection.js:420:18)
at Socket.emit (events.js:182:13)
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
Я попытался отловить ошибку, но это не решило мою проблему.
process.on('uncaughtException', function(err) {
console.info("uncaughtException called: \n", err);
})
Сервер создается с использованием экспресс и http:
express = require('express');
app = express();
http = require('http');
var httpServer = http.createServer(app);
httpServer.listen(3000, function(req, res) {
console.info('Server running at port 3000);
});
Я ожидаю предотвратить появление ошибки ECONNRESET на сервере Какое решение?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Мы можем видеть, что это проблема mysql на основе выданной ошибки:
Emitted 'error' event at:
at Connection._handleProtocolError (/home/abc/node_modules/mysql/lib/Connection.js:425:8)
У меня возникла та же проблема, и способ, которым я ее исправил, заключался в том, что после подключения к базе данных я добавил setInterval каждые 20 минут, выполняя простой запрос, такой как db.query ('SELECT 1;'). Предположительно mysql закрывает соединение после некоторого времени простоя, поэтому на основе этого Почта
«Разработчики модуля рекомендовали использовать контрольный сигнал для поддержания соединения, например, вызывать SELECT 1; с интервалом».
Это быстрое исправление, и оно сработало для меня, но если вы хотите выяснить другой способ, я рекомендую прочитать сообщение выше, поскольку есть другие решения для него.