を認識しませんルータ(いない以前の1):/public
定義が最初に来るのでNode.js/Expess.js。すべての要求はこれをキャッチしている -</p> <pre><code>var public_dir = path.join(__dirname, 'public'); app.use('/public', express.static(public_dir)); </code></pre> <p>しかし、私はこれらの行の下に追加するとき:ワイルドカードルータで使用する場合は、静的ルーター、私は私の他のすべてのルートでのみ、このルートを使用する場合、その静的ファイルがうまく務め
app.get('/*', function(req, res){
res.redirect('/#!' + req.path);
});
それは、私には奇妙です。しかし、すべてのリクエストは最後に定義された/*
要求ハンドラに送られます。
ページhttp://127.0.0.1:3000/public/website/application.js
を開こうとすると、http://127.0.0.1:3000/#!/public/website/application.js
にリダイレクトされます。それがなぜ起こるのか、この状況を最良の方法で解決する方法は?
ありがとうございました!
解決は簡単です。私はミドルウェアのリストで声明を出していません。
app.use(app.router);
これは、URLルーティングの問題を引き起こします。しかし、node.js
がミドルウェアの「誤った設定」について教えてくれていないのは不思議です。
で見つけ意味その第二と..? – DrCord
@DrCordが述べるように、app。[get | post | put | etc]メソッドがルータに追加されます。したがって、ルータを最初にマウントすると、最初にルータが使用されます。 –
Nickのようにルータと静的決定の優先順位を述べた。ルータと静的な(相対的な)位置の使い方を示してください。 – user568109