3

基本的に、Node.js を使用して JavaScript 開発用のアプリケーションを作成しています。発生し続ける私の問題は、サーバーの起動時です。

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 ドキュメントを表示するにはどうすればよいかということです。どんな助けでも大歓迎です。ありがとう。

4

1 に答える 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);

もちろん、これにはエラーチェックなどはありませんが、問題はありません。

于 2012-12-19T08:07:07.853 に答える