1

node js の使用を開始したばかりで、自分の Web サイトの 1 つをそこに移動しました。

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

var app = http.createServer(function (req, res) {

    fs.readFile('./index.html', 'utf-8', function(error, content) {
        res.writeHead(200, {'Content-Type' : 'text/html'});
        res.end(content);
    });
});
app.listen(8080);

index.html は私の Web サイトのホームページです。HTMLのみで機能しますが、タグを入れると(たとえば、jqueryを含めるため)、firebugでJSエラーが発生します:Uncaught syntax error:unexpected token < in jquery.js、そしてもちろん「$ is undefined」。画像も読み込まれません。

ルーティングを行ったり、Express フレームワークなどを使用したりする必要はありません。単純な 1 ページの Web サイトです。私は何を間違っていますか?

4

1 に答える 1

2

サーバーが画像やその他のリソースのリクエストを処理していません。すべての要求には、./index.htmlページの同じ応答が与えられます。

これは、外部スクリプトまたは画像がページに含まれている場合、ブラウザによってそれらのリソースのリクエストが行われると、index.html代わりに元のページが配信されることを意味します。

NodeJS はかなり低レベルです。各リクエストの URL に基づいて、さまざまなタイプのリソースのリクエストを手動で処理するようにサーバーをセットアップする必要があります。

最善の策は、いくつかの NodeJS チュートリアルを読むことです。それらはコンテンツ提供の基本をカバーする必要がありますが、それらの多くは下位レベルの詳細には対処せず、Connect や Express などのパッケージを提案します。

コードをこれに変更すると、要求されているすべてのリソースが表示されます。

var http    =   require('http');
var fs      =   require('fs');
var url     =   require('url');
var path    =   require('path');

var app = http.createServer(function (req, res) {

    var pathname = url.parse(req.url).pathname;
    var ext      = path.extname(pathname).toLowerCase();

    console.log(pathname);

    if (ext === ".html") {
        fs.readFile('./index.html', 'utf-8', function(error, content) {
            res.writeHead(200, {'Content-Type' : 'text/html'});
            res.end(content);
        });
    }
});
app.listen(8080);
于 2012-09-22T18:02:41.157 に答える