У меня есть API, который отлично работает, но я получаю там следующее предупреждение:
Обнаружена возможная утечка памяти в EventEmitter. '11 открытых слушателей добавлено. Используйте emitter.setMaxListeners () для увеличения лимита
Я нашел то, что я надеялся, было решением здесь: https://www.reddit.com/r/javascript/comments/6b0qz0/asyncawait_possible_eventemitter_memory_leak/
Но это не сработало для меня: (
Это 1 функция из моего API:
const settings = require("../configuration/development/settings");
const sql = require('mssql');
exports.getAllMeetings = function (req, res) {
sql.connect(settings).then(pool => {
return pool.request()
.execute('MeetingSelect')
}).then(result => {
if (result) {
sendJson(req, res, result);
}
}).catch(err => {
res.send(err);
sql.close();
});
sql.on('error', err => {
res.send(err);
sql.close();
});
}
function sendJson(req, res, data) {
res.writeHead(200, {
'Content-Type': 'application/json'
});
if (data) {
res.write(JSON.stringify(data));
sql.close();
}
sql.close();
res.end();
};
Я пытался добавить следующее для удаления слушателей после каждого закрытия, но, похоже, он никогда не попадал внутрь.
sql.on("close", () => {
sql.removeAllListeners();
});