私はnode.jsを学習しようとしていて、ちょっとしたロードブロックを打っています。Node.js - 外部のJSとCSSファイル(単にnode.jsを使用していません)
私の問題は、私は外部のCSSとjsファイルをhtmlファイルに読み込むことができなかったことです。
GET http://localhost:8080/css/style.css 404 (Not Found)
GET http://localhost:8080/js/script.css 404 (Not Found)
私は多少のウェブサーバがサービスを提供できるようにするために、以下のアプリの構造を模倣し、公開ディレクトリのルートを追加するように言われました(これはすべてのファイルは、アプリケーションのルートにいたときでした)外部ファイル。
私のアプリの構造は、だから私のwebserver.jsスクリプトは、アプリのルートにある、と私はアクセスしたいすべてが「国民にあるので
domain.com
app/
webserver.js
public/
chatclient.html
js/
script.js
css/
style.css
のようなものです。
また、path.extname()を使用してパスにあるファイル拡張子を取得するthis exampleも見ました。 (最後のコードブロックを参照)。
私は新しいサイト構造とこのpath.extname()の例を組み合わせて、Webサーバーが私のpublic dir内のファイルにアクセスできるようにしました。したがって、外部ファイルを参照するhtmlファイルをレンダリングできますjsとcssファイル。
私のwebserver.jsはこのように見えます。公共のケース内部
var http = require('http')
, url = require('url')
, fs = require('fs')
, path = require('path')
, server;
server = http.createServer(function(req,res){
var myPath = url.parse(req.url).pathname;
switch(myPath){
case '/public':
// get the extensions of the files inside this dir (.html, .js, .css)
var extname = mypath.extname(path);
switch (extname) {
// get the html
case '.html':
fs.readFile(__dirname + '/public/chatclient.html', function (err, data) {
if (err) return send404(res);
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data, 'utf8');
res.end();
});
break;
// get the script that /public/chatclient.html references
case '.js':
fs.readFile(__dirname + '/public/js/script.js', function (err, data) {
if (err) return send404(res);
res.writeHead(200, { 'Content-Type': 'text/javascript' });
res.end(content, 'utf-8');
res.end();
});
break;
// get the styles that /public/chatclient.html references
case '.css':
fs.readFile(__dirname + '/public/css/style.css', function (err, data) {
if (err) return send404(res);
res.writeHead(200, { 'Content-Type': 'text/javascript' });
res.end(content, 'utf-8');
res.end();
});
}
break;
default: send404(res);
}
});
、私は するvar EXTNAME = mypath.extname(パス)を経由して、このディレクトリ内のフォルダ/ファイルのいずれかを取得しようとしています。 私が提供したリンクに似ています。
しかし、現時点では、コンソールにログオンすると「extname」は空です。
誰かが私が追加する必要があるかもしれないとアドバイスすることができますかここでtweek? これはExpressで簡単に行うことができますが、Nodeに依存するだけで同じことを達成する方法を知りたいと思います。
私はこれに関する助けに感謝します。
ありがとうございます。
実際のエラーを確認するには、 'send404()'関数を呼び出す前に 'err'の値を出力してみてください。 – monsur