1. ホーム
  2. javascript

[解決済み] node-expressのサーバーを正しく終了させるには?

2023-01-01 09:20:58

質問

からのコールバックを受け取った後、サーバを終了する必要があります。 /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' というエラーが出ます。また、この問題を解決するための情報をどのように探せばよいのかわかりません。

Expressサーバーはどのように終了すればよいのでしょうか?

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 . を呼び出す必要があります。 close() を呼び出すべきで、そのインスタンス上ではなく app のインスタンスではありません。

元です。

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