Node.js – 资源解释为脚本,但以MIMEtypestext / plain传输

首先:我没有使用Express。

这样一来,当我加载我的index.html文件recursionreadFile每个附加的文件,如我的CSS和JS页面。 但它总是在我的督察(Chrome)中返回这个错误:

资源解释为脚本,但以MIMEtypestext / 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不正确的path问题

尝试注释掉最后一个response.end。 不要以为你需要它。

  response.end(); }); // response.end(); } exports.route = route; 

我怀疑response.end在fs.readfile的callback函数有时间执行之前立即被调用,也许closures服务器上的头文件而不是给出正确的头文件“Content-Type”:'text / javascript'一个机会发送..

尝试了你的代码,为我工作..