2016-07-27 43 views
-2
var http = require("http"); 
var fs = require("fs"); 

http.createServer(function(request, response) { 
    console.log("User request received"); 
    response.writeHead(200, {"Content-Type": "Text/plain"}); 
    fs.createReadStream(process.argv[3]).pipe(response); 
    response.end(); 
}).listen(process.argv[2]); 

console.log("Server is running..."); 

該程序將端口號和文件路徑作爲命令行參數。
當我在節點上運行它,即使我通過正確的命令行參數,在錯誤發生我想啓動一個簡單的http web服務器,但這不起作用

+7

請發佈您正在收到的錯誤 – Anselm

+0

是否定義了過程變量? –

+1

進程是node @Grüse中的全局變量 –

回答

1

不會從瀏覽器

我不知道訪問時服務的文件,這可能不是是最好的答案,但它看起來像對response.end()的調用是在文件被提供之前關閉流。繼這個答案的邏輯:

createReadStream().pipe() Callback

您需要的時候流逢回調,所以我發現這個工作,但再一次,我不知道這是否是最好的解決方法:

var http = require("http"); 
var fs = require("fs"); 

http.createServer(function(request, response) { 
console.log("User request received"); 
response.writeHead(200, {"Content-Type": "Text/plain"}); 
var t = fs.createReadStream(process.argv[3]).pipe(response); 

t.on('close', function(){ 
    response.end(); 
}); 

}).listen(process.argv[2]); 
+0

感謝您的回答@Sweet_Pete –

+0

沒問題,歡迎您! –

相關問題