_/auth/github/callback
_ urlからコールバックを取得した後、サーバーを閉じる必要があります。通常のHTTP API現在、サーバーのクローズは server.close([callback])
API関数でサポートされていますが、node-エクスプレスサーバーで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 express close…」 が見つかりましたが、使用しているコードで使用できるかどうかはわかりません:var app = express();
。
app.listen()
は_http.Server
_を返します。 app
インスタンスではなく、そのインスタンスでclose()
を呼び出す必要があります。
例.
_app.get(
'/auth/github/callback',
passport.authenticate('github', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
setTimeout(function () {
server.close();
// ^^^^^^^^^^^
}, 3000)
}
);
var server = app.listen('http://localhost:5000/');
_
ソースを検査できます:_/node_modules/express/lib/application.js
_
Express v3では、この機能は削除されました。
app.listen()
関数の結果を割り当て、それに近いものを適用することで、同じことを実現できます。
var server = app.listen(3000);
server.close()
エクスプレスアプリでエラーが発生した場合は、サーバーを閉じる必要があり、以下のようにできます。
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.');
});
});