2

バックエンドでExpress(v3)を使用しており、次のような静的コンテンツも提供しています。

app.use(allowCrossDomain);
app.use(disableETag);
app.use(app.router);
app.use(express["static"](webRootDir));
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
app.set('view engine', 'html');
app.set('views', webRootDir);
app.engine("html", handlebarsEngine);

したがって、「/customers.html」のリクエストはexpress.staticミドルウェアによって処理されます。ただし、「customers」ファイルがなく、そのような動的コンテンツルートもないため、「/customers」の要求は機能しません。

もちろん、Expressを使用した動的ルートでの静的ファイルの提供で説明されているパスに従うことで、動的ルートからファイル「customers.html」を提供することもできます。

しかし、それはやり過ぎだと思います。そのようなものは、デフォルトのファイル拡張子を使用して簡単に構成できるはずですが、その方法を見つけることができませんでした。誰か見せてもらえますか?

4

1 に答える 1

6

express staticはserve-staticに基づいているため、extensionsプロパティが設定されたoptionsオブジェクトを渡します。あなたの例では、以下が機能します:

app.use(express.static(webRootDir, {'extensions': ['html']}));

これにより、expressが設定され、ファイルが見つからない場合、たとえば/customers、各拡張子をパスに追加しようとします。/customers.html

https://github.com/expressjs/serve-static#serve-files-with-vanilla-nodejs-http-serverのドキュメントを参照してください

于 2015-01-13T11:11:44.637 に答える