Vla*_*kov 64 javascript api webserver node.js express
我需要在从/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
Run Code Online (Sandbox Code Playgroud)
实际应用代码:
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/');
Run Code Online (Sandbox Code Playgroud)
另外,我发现'nodejs表示关闭......'但我不确定我是否可以将它与我拥有的代码一起使用:var app = express();.
Vla*_*sov 85
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/');
Run Code Online (Sandbox Code Playgroud)
您可以检查来源: /node_modules/express/lib/application.js
Mic*_*ael 39
在express v3中,他们删除了这个功能.
您仍然可以通过分配app.listen()函数的结果并在其上应用close 来实现相同的目的:
var server = app.listen(3000);
server.close()
Run Code Online (Sandbox Code Playgroud)
https://github.com/visionmedia/express/issues/1366
如果您的 express 应用程序中发生任何错误,那么您必须关闭服务器,您可以像下面那样执行此操作-
var app = express();
var server = app.listen(process.env.PORT || 5000)
Run Code Online (Sandbox Code Playgroud)
如果发生任何错误,我们的应用程序将收到一个名为SIGTERM. 您可以在此处阅读更多 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.');
});
});
Run Code Online (Sandbox Code Playgroud)