0

私はnode.jsから始めたばかりで、もちろんCSS、JS、および画像をロードする静的なindex.htmlファイルを提供しようとしています。fs.readFile と node-static の serveFile の両方を使用して、index.html ファイルを読み取ってみました。

どちらもファイルを提供しますが、含まれている CSS、JS、および画像を見つけることができません。私のパスが間違っているのかもしれませんが、これが私のディレクトリ構造です。

ワークスペースの構造

index.html ファイルからこれらの参照ファイルへの相対パスを使用しました。したがって、単純に css/main.css です。また、それらが server.js ファイルに相対的である必要がある場合に備えて、../css/main.css を実行しました。最後に、パスを絶対パスにする必要があり、index.html ディレクトリがルートだった場合は、/css/main.css. 何もロードされていません。

私は何を間違っていますか?

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


fs.readFile('../index.html', function (err, html) {
    if (err) {
        throw err; 
    }       
    http.createServer(function(request, response) {  
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(8080);
});

これにより、ファイルが正常に処理されます。

おっしゃる通り、まだまだ勉強中です。

ノード静的「API」はあまり完全ではないため、上記のルートに戻りました。

ありがとう。

4

4 に答える 4

4

上記で作成したサーバーでは、リクエストが画像または css ファイルに対するものであっても、リクエストごとに HTML ファイルのコンテンツを送信しています。入ってくるリクエスト オブジェクトを調べて、ユーザーが何を求めているかを確認してから、適切なファイルを送信し、適切なコンテンツ タイプを設定する必要があります。

または、生活をもっと楽にして、Express http://expressjs.comを使用することもできます。

Express は、静的ファイル サーバーを含め、これらのほとんどを処理します。

于 2012-10-24T17:32:50.713 に答える
3

友よ、車輪の再発明に自分の時間を無駄にしないでください。

私が知る限り非常に快適で、これらのことを簡単に処理できるExpressフレームワークを使用してください。

于 2012-10-25T00:35:56.390 に答える
0

問題は、返される content-type です。最も一般的なコンテンツ タイプについては、次の例をご覧ください。

https://gist.github.com/2573391

于 2012-10-24T19:47:35.863 に答える
0

(Express を使用するのではなく) 自分で行う必要がある場合は、このモジュールを使用してほとんどの MIME タイプをマップできます。

于 2014-04-18T07:04:45.797 に答える