Мне нужно закрыть сервер после получения обратного вызова с /auth/github/callback
URL-адреса. С обычным сервером закрытия HTTP API в настоящее время поддерживается server.close([callback])
функция API, но с сервером node-express я получаю сообщение TypeError: Object function app(req, res){ app.handle(req, res); } has no method 'close'
об ошибке. И я не знаю, как найти информацию для решения этой проблемы.
Как мне закрыть экспресс-сервер?
Примечания к конфигурации NodeJS:
$ node --version
v0.8.17
$ npm --version
1.2.0
$ npm view express version
3.0.6
Фактический код приложения:
var app = express();
// configure Express
app.configure(function() {
// … configuration
});
app.get(
'/auth/github/callback',
passport.authenticate('github', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
setTimeout(function () {
app.close();
// TypeError: Object function app(req, res){ app.handle(req, res); } has no method 'close'
}, 3000)
}
);
app.listen('http://localhost:5000/');
Кроме того , я нашел 'nodejs выразить близко ... но я не уверен , если я могу использовать его с кодом у меня есть: var app = express();
.
app
а неserver
. Спас мой день. Большое спасибо 👍В экспресс v3 эту функцию убрали.
Вы все равно можете добиться того же, назначив результат
app.listen()
функции и применив к нему close:var server = app.listen(3000); server.close()
https://github.com/visionmedia/express/issues/1366
источник
Если в вашем экспресс-приложении возникает какая-либо ошибка, вам необходимо закрыть сервер, и вы можете сделать это, как показано ниже:
var app = express(); var server = app.listen(process.env.PORT || 5000)
Если произойдет какая-либо ошибка, наше приложение получит сигнал с именем
SIGTERM
Вы можете узнать больше о сигнале узла здесь-
https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html
process.on('SIGTERM', () => { console.info('SIGTERM signal received.'); console.log('Closing http server.'); server.close(() => { console.log('Http server closed.'); }); });
источник
Я много раз отвечал на вопрос «как завершить работу HTTP-сервера» на разных node.jsканалы поддержки. К сожалению, я не могу рекомендовать какой - либо из существующих библиотек , поскольку они отсутствуют в том или ином пути. С тех пор я собрал пакет, который (как мне кажется) обрабатывает все ожидаемые случаи изящного завершения HTTP (S) сервера express.js.
https://github.com/gajus/http-terminator
Основное преимущество http-terminator заключается в том, что:
источник