2012-04-02 5 views
2

私はnodejsアプリケーションを持っており、expressjsを使用しています。静的ディレクトリを定義しましたが、アクセスするとロードされません。私の急行configがある:私の/publicディレクトリ内Expressjsが静的ファイルを認識しない

var app = express.createServer().listen(8001); 
app.configure(function(){ 
     app.use(express.methodOverride()); 
     app.use(express.bodyParser()); 
     app.use(app.router); 
     app.use('/public', express.static(__dirname + '/public')); 
     app.use(express.cookieParser()); 
     app.use(express.session({ secret: "appsession" })); 
     app.use(express.errorHandler({showStack: true, dumpExceptions: true})); 
     app.set('views', __dirname + '/views'); 
     app.set('view engine', 'hbs'); 
}); 

私は3つのフォルダ、CSS、JS、およびIMGを持っています。 CSSの中にはstyle.cssがあります。 http://localhost:8001/public/css/style.cssで直接アクセスしようとすると、次のように表示されます。Cannot GET /public/css/style.css

私が間違っている可能性のあるアイデアはありますか?

ありがとうございます!

編集:

私は自分のルート設定方法に関連しているようです。私はこのようにそれをやっている:

 var routes = require('./routes')(db); 
    pp.get('/', routes.index); 

は、その後、私は持っている私のindex.jsファイルに:

module.exports = function(db) { 
    return { 

     index: function(req, res, next) { 
       res.render('index'); 
      } 
     } 
    } 

私は私のエラー処理が有効になっているが、私はこの方法でルーティングを使用する場合、それはdoesnの使用はエラー処理を表していますが、これを取り除くとエラー処理が行われます。

答えて

3
これにあなたの静的なハンドラを変更し

app.use('/public/css', express.static(__dirname + '/public/css')); 

その後http://localhost:8001/public/css/style.cssあなたがcurl http://localhost:8001/public/css/style.cssを可能に

完全なサンプルアプリケーション欲しいものを得る必要があります。

app.js 
|-public 
    |-css 
    |-style.css 

var express = require("express"), 
    app = express.createServer(); 
app.use('/public/css', express.static(__dirname + '/public/css')); 
app.listen(8001); 
+0

ええ、それを試しても、どちらも動作しません。 – dzm

+0

申し訳ありません、入れ子になったディレクトリのことを忘れました。回答が更新されました。 –

+0

静的ハンドラはサブディレクトリを走査します。 –

4

あなたのセットアップ静的なHTTPミドルウェアとして以下:

app.use(express.static(__dirname + '/public')); 

とURLと./public/css/style.cssでファイルを取得する:あなたが実際にファイルを要求するとき

"/css/style.css" 

を国民は、パスの一部ではありません。

+1

これにアクセスしようとしました - 同じ取引GET/css/style.css – dzm

+0

アクセスしようとするとコンソールログに何かがありますか? –

+0

もあなたのファイルに対するパーミッションをチェックしますが、それは明示的/静的ミドルウェアの動作方法です。それはサブディレクトリをうまく処理します。 –

0

は同じ問題に実行していた答えを見つけることが、ここで

https://github.com/senchalabs/connect/issues/298

あなたはそれがちょっと迷子にネストされたファイルを使用しようとしたら、

それは一年前にトラッカーに固定されたと言い、しかし、私は今日試して正常に働いた

0

私はそれを考え出した。

私は自分のホスト上で2つのサービスを実行しています。 Djangoはルートでサイトを実行しています:、ノードはhttp://myURL.com/nodeにあります。

ノード内のすべてのファイルで正常です。 index.htmlファイルはうまくリクエストされていますが、スタイルシートと静的ファイルを要求するとindex.htmlはDjangoがノードに移動する前にその要求をキャッチします。 Djangoはファイルを見て、それが何であるか分からず、404エラーを返します。

Djangoがこれらのファイルへの要求をキャッチしないようにすることで、すべて正常に動作します。

関連する問題