2012-09-07 44 views
0

我有一個非常基本的節點腳本啓動,提供一個html頁面,最後關閉應用程序(理想情況下殺死節點進程)。除了最後一行調用close方法將其撕下之外,一切都很好。如何設置和拆卸與節點快遞?

var express = require('express') 
, http = require('http') 
, app = express() 
, server = http.createServer(app); 

app.get('/', function(req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

app.listen(8090); 
console.log("started..."); 
app.close(); 

當我運行這個瓦特/節點0.8+是

app.close(); 
    ^
TypeError: Object function app(req, res){ app.handle(req, res); } has no method 'close' 

任何人都知道我如何才能更安全地關閉應用程序明確下來,我得到的錯誤?

回答

1

到目前爲止,最好的辦法,我找到了殺死節點處理。似乎完成工作(雖然純度我想正好接近快遞)

process.exit(code=0) 
-1
process.on('SIGTERM', function() { 
    app.close(); 
}); 

試一下

+0

所以如果我理解這一點 - 它使我能夠運行上面的當我從終端打控制-c時,它會殺了應用程序w /出現異常?如果是這種情況,我怎樣才能從節點內自動執行此ctl-c操作?如果可能的話,我需要讓它自成一體 –

+0

啊,我誤解了。我不明白用例。本應用程序在什麼情況下會自行終止?你想要這個節點應用程序按需啓動,提供一個頁面,然後停止?我現在失去了:) –

+0

我創建了一個js測試運行器與幻影js,因爲幻像需要一個服務器起來我正在使用上面的代碼來幫助使這個過程真正cmd線友好(不需要通過運行任何東西一個瀏覽器)。這是一個要點,顯示我到目前爲止用幻像和節點運行茉莉花測試https://gist.github.com/3664785 –

2

你是如此接近:

var express = require('express') 
, http = require('http') 
, app = express() 
, server = http.createServer(app); 

app.get('/', function(req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

var listener = app.listen(8090); 
console.log("started..."); 
listener.close();