2013-08-02 11 views
6

最初に:私は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

+0

..オフ、あなたのコードでそれを試みた私のために働いた、それは '、' writeHeader' writeHead'ではありません。次のような、それは 'もし'だ。オブジェクトを使用する必要があります。 'response.writeHead(200、{'Content-Type':mimeTypes [extension]});'。 – Ryan

+0

'writeHead'の良いキャッチです。しかし、私の以前の質問を参照してください。http://stackoverflow.com/questions/18004512/node-js-incorrect-path-problems/18004553?noredirect=1#comment26330812_18004553それは私が元々それを持っていた方法でした。違いはありませんでした。これは私の2番目の大きな反復です。 – JDillon522

+0

スクリプトのURLに直接アクセスしてみましたか?それは動作しますか? – Ryan

答えて

7

最後Response.Endのことをコメントアウトしてください。それが必要だとは思わないでください。

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

は私がResponse.Endのがfs.readfileコールバック内の1は多分正しいヘッダの「Content-Typeは」与えていないサーバー上のヘッダを閉鎖、実行する時間を持って、すぐ前に呼び出さなっていると思われます。 「テキスト/ javascriptの」送信されますするチャンス..

はまず

+2

うん、それだった。 FML私は6時間以上これを見てきました。ありがとう男 – JDillon522

+0

ありがとう皆さん。それはわたしを助ける –

関連する問題