2012-12-19 83 views
3

好吧,所以基本上我正在使用Node構建JavaScript開發應用程序。我的問題不斷出現在服務器啓動時。NodeJS Web服務器,啓動服務器時加載html文件的問題

var host = '127.0.0.1', 
    port = 8080; 

var fs = require('fs'), 
    http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    var buffer = new Buffer(100); 
    res.end(fs.read('index.html')); 
}).listen(port, host); 
console.log('Server running at http://' + host + ':' + port); 

我的問題在於res.end(fs.read('index.html'));我希望服務器在瀏覽器中建立連接時運行該HTML文檔。我總是在控制檯中得到這個錯誤響應。

buffer.js:236 
     throw new Error('First argument needs to be a number, ' + 

Error: First argument needs to be a number, array or string. 
    at new Buffer (buffer.js:236:15) 
    at Object.fs.read (fs.js:348:14) 
    at Server.<anonymous> (C:\Users\myname\Desktop\app\bin\server.js:45:20) 
    at Sever.EventEmitter.emit (events.js:96:17) 
    at HTTPParser.parser.onIncoming (http.js:1807:12) 
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:111:23) 
    at Socket.socket.ondata (http.js:1704:22) 

我的問題是,當連接到服務器時,如何在Web瀏覽器中顯示html文檔?任何幫助表示讚賞。謝謝。

+1

什麼是緩衝區?你應該使用同步版本 –

回答

2

代碼中引發了一些問題,但如果我理解你的要求,這是你所需要的:

你需要爲你看到下面寫的文件,以響應流的結果。

var host = '127.0.0.1', 
    port = 8080; 

var fs = require('fs'), 
    http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    fs.readFile('index.html',function(err,data){ 
     res.write(data); 
     res.end(); 
    }); 
}).listen(port, host); 

console.log('Server running at http://' + host + ':' + port); 

當然,這沒有錯誤檢查等,但將讓你去。