最初に:私はExpressを使用していません。Node.js - リソースはスクリプトとして解釈されますが、MIMEタイプtext/plainで転送されます
私のindex.html
ファイルをロードすると、再帰的にreadFile
のCSSやJSページなどの添付ファイルがロードされます。しかし、それは常に私の検査官(クローム)で、このエラーを返します:
リソースは、私はそれがこれをやっている理由を絶対にないアイデアを持っていないスクリプトとして解釈されず、MIMEタイプtext/plainの
で転送します。私のコードは以下の通りです:
var http = require('http');
var querystring = require('querystring');
var fs = require('fs');
var url = require('url');
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 {
var file_path = "";
// parses the url request for a file and pulls the pathname
var url_request = url.parse(request.url).pathname;
var tmp = url_request.lastIndexOf(".");
var extension = url_request.substring((tmp + 1));
file_path = url_request.replace("/", "");
//load needed pages and static files
fs.readFile(file_path, function (error, contents){
if(error){
console.log('DIE!');
console.log(error);
response.writeHeader(500, {"Content-Type": "text/html"});
response.end("<h1>FS READ FILE ERROR: Internal Server Error!</h1>");
}
else{
console.log('SUCCESS!');
// set content type
if (extension === 'html') response.writeHeader(200, {"Content-Type": 'text/html'});
else if (extension === 'htm') response.writeHeader(200, {"Content-Type": 'text/html'});
else if (extension === 'css') response.writeHeader(200, {"Content-Type": 'text/css'});
else if (extension === 'js') response.writeHeader(200, {"Content-Type": 'text/javascript'});
else if (extension === 'png') response.writeHeader(200, {"Content-Type": 'image/png'});
else if (extension === 'jpg') response.writeHeader(200, {"Content-Type": 'image/jpg'});
else if (extension === 'jpeg') response.writeHeader(200, {"Content-Type": 'image/jpeg'});
else { console.log("NO CORRECT EXTENSION")};
console.log(extension);
response.end(contents);
}
response.end();
});
response.end();
}
}
exports.route = route;
どうすればいいですか?これは私のプロジェクトをその軌道で止めました。
注:これは私がここにについて話していた以前の問題の進行です:Node.js incorrect path problems
..オフ、あなたのコードでそれを試みた私のために働いた、それは '、' writeHeader' writeHead'ではありません。次のような、それは 'もし'だ。オブジェクトを使用する必要があります。 'response.writeHead(200、{'Content-Type':mimeTypes [extension]});'。 – Ryan
'writeHead'の良いキャッチです。しかし、私の以前の質問を参照してください。http://stackoverflow.com/questions/18004512/node-js-incorrect-path-problems/18004553?noredirect=1#comment26330812_18004553それは私が元々それを持っていた方法でした。違いはありませんでした。これは私の2番目の大きな反復です。 – JDillon522
スクリプトのURLに直接アクセスしてみましたか?それは動作しますか? – Ryan