express.js を使用した静的ファイル 質問する

express.js を使用した静的ファイル 質問する

index.htmlサブディレクトリを静的ファイルとして提供したいです/media。インデックス ファイルは、/index.html/URL の両方で提供される必要があります。

私は持っている

web_server.use("/media", express.static(__dirname + '/media'));
web_server.use("/", express.static(__dirname));

しかし、2 行目は 全体 ( と だけでなく、 内のすべてのファイルを含む) を提供しているようですが__dirname、これは望ましくありません。index.htmlmedia

私も試してみました

web_server.use("/", express.static(__dirname + '/index.html'));

しかし、ベース URL にアクセスすると(double component)/へのリクエストが発生し、当然失敗します。web_server/index.html/index.htmlindex.html

何か案は?


ちなみに、Express でこのトピック (static()およびそのパラメータ) に関するドキュメントがまったく見つかりませんでした... イライラします。ドキュメント リンクも歓迎します。

ベストアンサー1

この設定をしている場合

/app
   /public/index.html
   /media

これであなたが望んでいたものが手に入るはずです

var express = require('express');
//var server = express.createServer();
// express.createServer()  is deprecated. 
var server = express(); // better instead
server.configure(function(){
  server.use('/media', express.static(__dirname + '/media'));
  server.use(express.static(__dirname + '/public'));
});

server.listen(3000);

秘訣は、この行を最後の手段として残しておくことだ

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

ドキュメントに関しては、Express は connect ミドルウェアを使用しているため、connect ソース コードを直接確認する方が簡単だとわかりました。

たとえば、この行は index.html がサポートされていることを示していますhttps://github.com/senchalabs/connect/blob/2.3.3/lib/middleware/static.js#L140

おすすめ記事