我已經建立了一個簡單的node.js服務器用下面的代碼:簡單的node.js服務器沒有錯誤處理失敗的請求
var http = require("http");
var url = require('url');
var fs = require('fs');
var server = http.createServer(function(request, response){
console.log('Connection');
var path = url.parse(request.url).pathname;
switch(path) {
case '/':
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('hello world');
break;
case '/socket.html':
fs.readFile(__dirname + path, function(error, data){
console.log(path);
console.log(error);
if (error){
response.writeHead(404);
response.write("opps this doesn't exist - 404");
}
else{
response.writeHead(200, {"Content-Type": "text/html"});
response.write(data, "utf8");
}
});
break;
default:
response.writeHead(404);
response.write("opps this doesn't exist - 404");
break;
}
response.end();
});
server.listen(8001);
連接到本地主機:8001個按預期工作。
然而,當我嘗試連接到本地主機:8001/socket.html,服務器崩潰並顯示到終端以下錯誤:
events.js:141 throw er; // Unhandled 'error' event ^
Error: write after end at ServerResponse.OutgoingMessage.write (_http_outgoing.js:428:15) at /Users/Nikos/Desktop/hack_reactor/server.js:24:34 at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3)
調試時的console.log(誤差)返回null 。請解釋爲什麼發生這種情況。
非常感謝。 –