Node.js - Ressource interpretiert als Schrift, aber übertragen mit dem MIME-Typ text/plain
Vorneweg: ich bin nicht mit Express.
Mit, dass aus dem Weg, wenn ich es lade meine index.html
Datei rekursiv readFile
jede angehängte Datei, z.B. meine CSS-und JS-Seiten. Aber es gibt immer diesen Fehler in meinem inspector (Chrome):
Ressource interpretiert als Schrift, aber übertragen mit dem MIME-Typ text/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 dieses Problem beheben? Das hat aufgehört, mein Projekt in seiner tracks.
Hinweis: dies ist ein Fortschreiten von einem früheren problem hatte ich auch hier die Rede: Node.js falscher Pfad Probleme
- First off, ist es
writeHead
, nichtwriteHeader
. Next — Huch, dasif
. Sollten Sie ein Objekt verwenden.response.writeHead(200, {'Content-Type': mimeTypes[extension]});
. - Guter Fang auf der
writeHead
. Aber wie der mime, siehe meine Vorherige Frage an stackoverflow.com/questions/18004512/... Das war, wie ich hatte es ursprünglich. Es nicht einen Unterschied machen. Dies ist meine zweite große iteration. - Haben Sie versucht, den Besuch der Skript-URL direkt? Funktioniert es?
- Yeah, das pathing alles richtig (wenn es das ist was du meinst). Und wie am besten wie ich kann sagen, von diesem dummen Fehler, er liest es der richtige Weg, aber dann scheißt das Bett und beschließt, es zu ändern.
- Warum ist, dass die Letzte Antwort.end () - Anweisung gibt es? Nicht schließen, dass die Antwort vor dem fs.readFile abgeschlossen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, kommentieren Sie, dass die Letzte Antwort.Ende. Glaube nicht, dass Sie es brauchen.
Ich vermute, die Antwort.Ende wird immer sofort aufgerufen, bevor das innerhalb der fs.readfile Rückruf hat Zeit zum ausführen, vielleicht ist die Schließung der Header auf dem server nicht die richtigen header "Content-Type": "text/javascript" eine chance zu geschickt bekommen..
Versuchte es auf deinen code, bei mir funktioniert..
Wenn nodejs und mit express den code unten funktioniert bei mir
Der obige code funktioniert bei mir.