2

するとfs.readFile(file...、次のエラーが表示されます。

{ [エラー: ENOENT、'foundation/css/normalize.css' を開く]

エラー番号: 34、

コード: 'ENOENT',

パス: 'foundation/css/normalize.css' }

リンク元の HTML ファイルに関連して、またはサーバーとルーターを実行している node.js ファイルの場所に関連して、パスをルーティングする必要がありますか?

いいえ、私はエクスプレスを使用していません。「エクスプレスを使用する」は受け入れられる答えではありません。


編集

@BenjaminGruenbaum の最後のコメント。私の HTTP 応答が何を意味するのかわかりませんが、私のコード ロジックは次のとおりです。URI を介して index.html を読み込み、それreadFileがドキュメントになると、他のすべてのリンクされたファイルを再帰的に通過します。正しく表示するためにそれを分解するスクリプトがありますContent-Type。コメントするには長すぎるため、ここに含めます。

function route(handle, pathname, response, request){
// console.log("About to route a request for " + pathname);

if (typeof handle[pathname] === "function"){        
    handle[pathname](response, request);
    } else {

    // console.log('NON HTML');
    // console.log(pathname);

    var file_path = "";
    var mimes = {
        'css':  'text/css',
        'js':   'text/javascript',
        'htm':  'text/html',
        'html': 'text/html',
        'png': 'image/png',
        'jpg': 'image/jpg',
        'jpeg': 'image/jpeg'
    };

    // parses the url request for a file and pulls the pathname
    var url_request = url.parse(request.url).pathname;      
    // console.log('URL REQUEST');
    // console.log(url_request);

    // finds the placement of '.' to determine the extension    
    var tmp  = url_request.lastIndexOf(".");
    // determines the extension by uing .substring that takes everything after '.'
    var extension  = url_request.substring((tmp + 1));
    // console.log('EXTENSION');
    // console.log(extension);


    //set path of static pages
    if (extension === 'css' || extension === 'js' || extension === 'htm' || extension === 'html' || extension === 'png' || extension === 'jpg' || extension === 'jpeg'){

        // console.log('LOAD STATIC PAGE');
        file_path = url_request.replace("/", "");
        // console.log(file_path);
        // console.log();
    }

    //load needed pages and static files
    fs.readFile(file_path, function (error, data){
        if(error){
            // console.log("AM I DEAD");

            // console.log(error);
            // console.log();
            response.writeHeader(500, {"Content-Type": "text/html"});  
            response.write("<h1>FS READ FILE ERROR: Internal Server Error!</h1>");    
        }
        else{
            response.writeHeader(200, {"Content-Type": mimes[extension]});  

            console.log('SHOULD BE SUCCESS')
            console.log(mimes[extension]);
            // console.log(data);
            response.write(data);
        }

        response.end();  
    });
    response.end();
}
}

exports.route = route;

私が持っている場所の数からわかるように、console.log()私はそれを一番下まで追跡できます。ここで失敗します:

else{
            response.writeHeader(200, {"Content-Type": mimes[extension]});  

            console.log('SHOULD BE SUCCESS')
            console.log(mimes[extension]);
            // console.log(data);
            response.write(data);
        }

やや雑なインデントで申し訳ありません。


最終編集:

このばかげた状況の最終的な解決策は、次の質問で見つけることができます: Node.js - スクリプトとして解釈されるリソースですが、MIME タイプ text/plain で転送

Noobに我慢してくれた@BenjaminGruenbaumに感謝します

4

1 に答える 1