2011-09-30 22 views
3

我用下面的腳本,以顯示我的瀏覽器的HTML文件:Node.js的發送靜態文件,如HTML文件

var sys = require("sys"), 
    http = require("http"), 
    url = require("url"), 
    path = require("path"), 
    fs = require("fs"); 

http.createServer(function(request, response) { 
    var uri = url.parse(request.url).pathname; 
    var filename = path.join(process.cwd(), uri); 
    path.exists(filename, function(exists) { 
     if (!exists) { 
      response.sendHeader(404, {"Content-Type": "text/plain"}); 
      response.write("404 Not Found\n"); 
      response.close(); 
      return; 
     } 

     fs.readFile(filename, "binary", function(err, file) { 
      if (err) { 
       response.sendHeader(500, {"Content-Type": "text/plain"}); 
       response.write(err + "\n"); 
       response.close(); 
       return; 
      } 

      response.sendHeader(200); 
      response.write(file, "binary"); 
      response.close(); 
     }); 
    }); 
}).listen(8080); 

sys.puts("Server running at http://localhost:8080/"); 

但是,當我嘗試導航到http://localhost:8080/path/to/file我收到此錯誤:

Object #<ServerResponse> has no method 'sendHeader' 
(at line 16). 

我使用節點v0.4.12

回答

3

在節點v0.4.12沒有方法sendHeader但它看起來像response.writeHead(statusCode, [reasonPhrase], [headers])具有相同的API的方法,讓你不需經過d只是嘗試用writeHead替換sendHeader

參見:http://nodejs.org/docs/v0.4.12/api/http.html#http.ServerResponse

+0

thansk!還有其他的結構,我不得不重寫(例如close()widht end()),但現在它工作 –

0

任何閱讀最近,還應該注意的是,響應對象到Response.End使用(),而不是現在response.close()