2011-12-11 5 views
2

は、これらのタグが含まれています:ローカルの.cssファイルと.jsファイルがindex.htmlファイルにリンクされていないのはなぜですか?私はNode.jsのを使用しての.htmlファイルを送信しようとしています

var fs = require('fs'); 
var http = require ('http'); 
http.createServer(function (request, response) { 

    console.log('request starting...'); 

    fs.readFile('C:/Users/.../index.html', function(error, content) { 
     if (error) { 

      response.writeHead(500); 
      response.end(); 
     } else { 
      //response.writeHead(200, { 'Content-Type': 'text/html' }); 
      response.end(content, 'utf-8'); 
     } 

     console.log(error); 
    }); 

}).listen(8080); 

問題がインデックスということです:

ここ
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<meta name="description" content="This is my personal profile website" /> 
<link rel="stylesheet" type="text/css" href="profile_design.css" /> 
<link rel="stylesheet" href="jquery.fancybox-1.3.4/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" /> 

<script type="text/javascript" src="jquery-1.7.1.min.js"></script> 
<script type="text/javascript" src="jquery.fancybox-1.3.4/fancybox/jquery.fancybox-1.3.4.pack.js"></script> 
<script type="text/javascript" src="profile.js"></script> 

は、Node.jsの中にHTTPサーバです。 htmlファイルは適切な形で返されますが、すべてのJavaScriptファイルとCSSはクライアント側に正しく送信されません。問題はそれらの.jsと.cssファイルを送信する方法です。

+0

は、あなたがより具体的にすることはできますか? 「正しく送信しない」とはどういう意味ですか?エラーがありますか、スタックトレースを表示できますか?何か? – alessioalex

+0

私はnode.js用のデバッグツールを持っていないと思っています。私はphpに戻ります:( – 0x90

答えて

1

ブラウザは、ポート8080を介して.cssおよび.jsリソースファイルを取得しようとします。これはnode.jsサーバーです。しかし、あなたのサーバは、リクエストに関係なくindex.htmlファイルを処理することはありません。

アドバイス:express.jsプラグインを使用すると、少し複雑routingを設定します。

1

node-paperboyまたはnode-staticのようなアセットを処理するハンドラを用意するか、自分で作成する必要があります。

+0

または 'connect.static' – Raynos

+0

接続を使用している場合: – clyfe

5

私は同じ問題を抱えていましたが、何が起こっているのかを理解する前に、外部モジュールやフレームワークを使用したくありませんでした。だから、これは私がCSSファイルの問題を自分で解決した方法です。うまくいけば、それは誰かのために便利です。

私はこの単純な関数を呼び出す/style.cssを要求していたび:

function style(response) { 

    console.log("Request handler 'style' was called."); 

    fs.readFile("style.css", function(error, file) { 

    if(error) { 

     response.writeHead(500, {"Content-Type": "text/plain"}); 

     response.write(error + "\n"); 

     response.end(); 

    } else { 

     response.writeHead(200, {"Content-Type": "text/css"}); 

     response.write(file); 

     response.end(); 

    } 

    }); 

} 

は基本的に、我々は静的ファイルを読み込み、要求に応じてそれらを送り返すを。リクエストのルーティングには注意が必要です。

+0

私はこの答えが似ています追加のライブラリを必要とせずに問題を解決できます。 – hellslam

0

私はこれがあなたの質問に答えたりないことを確認していないが、私の場合、私は、ビュー、フォルダ内のすべての私のCSSやJSファイルを追加し、その後、私は(私のserver.js

server.useに次を追加しましたexpress.static(__ dirname + '/ view /'));

これは、この問題のために私

0

簡単に修正のための問題を解決し、右の終了bodyタグの前に、あなたのHTMLドキュメント(index.htmlを)の終わりに、あなたのstyle.cssのコードを追加することです。これは私の場合に実際に働いた。ただ、追加:

<style type="text/css"> "your css code goes here" </style> 

関連する問題