一尘不染

如何正确关闭node-express服务器?

node.js

我需要从/auth/github/callback 网址获得回调后关闭服务器。使用通常的 HTTP
API,

关闭服务器当前支持server.close([callback])
API功能,但是使用节点表达服务器时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 expressclose…’,]但是我不确定是否可以将其用于具有以下代码的代码中:var app =express();


阅读 1141

收藏
2020-07-07

共1个答案

一尘不染

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

2020-07-07