素のNode.jsでCSSやJSなどの静的ファイルが読み込めない
素のNode.jsでCSSやJSなどの静的ファイルが読み込めない
Node.js でサーバーを立ち上げるとき、Apache などと違ってドキュメントルートから静的ファイルを読み込むってことを自動でやってくれない。 サーバーにリクエストされた静的ファイルのパスから拡張子を判定してレスポンスを返してあげないといけない。
server.on("request", function (req, res) { // リクエストされた拡張子をまず判定する chkExt(req, res, function () { switch (req.url) { case "/": // なにかしらの処理 break default: // なにかしらの処理 break; } }); }); var chkExt = function (req, res, callback) { var url = req.url; var tmp = url.split('.'); var ext = tmp[tmp.length - 1]; var path = '.' + url; switch (ext) { case 'js': fs.readFile(path, function (err, data) { res.writeHead(200, { "Content-Type": "text/javascript" }); res.end(data, 'utf-8'); }); break; case 'css': fs.readFile(path, function (err, data) { res.writeHead(200, { "Content-Type": "text/css" }); res.end(data, 'utf-8'); }); break; default: callback(); } }
意外と使い勝手がいいソース転がってなかったので書いてみた。