Zunächst einmal: Ich verwende nicht Express.Node.js - Ressource als Skript interpretiert, aber mit MIME-Typ übergeben text/plain
Mit diesem aus dem Weg, wenn ich meine index.html
Datei rekursiv readFile
jede angehängte Datei wie meine CSS und JS Seiten laden. Aber es gibt immer diesen Fehler in meinem Inspektoren (Chrom):
Ressource als Script interpretiert, sondern mit MIME-Typ Text übertragen/plain
Ich habe absolut keine Ahnung, warum es dies tut. Hier ist mein Code:
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;
Wie kann ich das beheben? Das hat mein Projekt auf Eis gelegt.
Hinweis: Dies ist ein Fortschreiten von einem früheren Problem, das ich hier die Rede war: Node.js incorrect path problems
Zunächst einmal, es ist 'writeHead', nicht' writeHeader'. Weiter - yikes, das 'if'. Sie sollten ein Objekt verwenden. 'response.writeHead (200, {'Inhaltstyp': mimeTypes [Erweiterung]});'. – Ryan
Guter Fang auf dem 'writeHead'. Aber was den Pantomime angeht, siehe meine vorherige Frage unter http://stackoverflow.com/questions/18004512/node-js-incorrect-path-problems/18004553?noredirect=1#comment26330812_18004553 So hatte ich es ursprünglich. Es machte keinen Unterschied. Dies ist meine zweite große Wiederholung. – JDillon522
Haben Sie versucht, die Skript-URL direkt zu besuchen? Funktioniert es? – Ryan