2013-01-25 9 views
39

私は/auth/github/callback URLからコールバックを取得した後にサーバーを閉じる必要があります。通常のHTTP API終値 サーバーで現在server.close([callback]) API機能をサポートしているが、ノード特急サーバーと私はTypeError: Object function app(req, res){ app.handle(req, res); } has no method 'close' エラーを取得しています。そして私はこの問題を解決するための情報を見つける方法を知らない。
Expressサーバーを閉じるにはどうすればよいですか?node-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();

答えて

49

app.listen()は、http.Serverを返します。このインスタンスではを呼び出し、appインスタンスでは呼び出さないでください。

Ex。

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

+3

奇妙な、私はいくつかのルートにアクセスする場合、それがクローズされていません。 –

+1

@Uday、私もこれを経験しました。私のブラウザにはHTTP1.1の永続的な接続が開いていることが分かったので、F5キーを押すと、サーバーが閉じられていないように見えました。別のブラウザを試すと、サーバソケットが動作していないことがわかります。 –

21

エクスプレスv3のでは彼らがこの機能を削除しました。あなたはまだapp.listen()関数の結果を割り当てることによって、同じことを達成し、それに近い適用することができます

var server = app.listen(3000); 
server.close() 

https://github.com/visionmedia/express/issues/1366

関連する問題