すると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に感謝します