カスタム404ページ(html、css、img、およびicoを含む)を表示したいと考えています。最初の公開静的ホームページを置き換えたときに私の404フォルダーが動作することを知っています。しかし、私はルートを正しい方法で使用していないか、2つの静的フォルダを設定できないと考えています。Express.js 4.xでは、express.staticを2回使用できますか?
私はテンプレートビューエンジンをまったく使用したくありません。私はすべてがフロントエンドでレンダリングされることを望みます。
次のように私のプロジェクトに見える:
404
--index.html
--error.css
--404.jpg
bin
--server.js
public
--index.html
routes
--index.js
package.json
app.js
app.js私は、ディレクトリ(使用しようとして 'で周りにプレイした
...
var index = require(./routes/index); //works
...
app.use(favicon(__dirname + '/public/content/images/logo.ico'));
app.use(logger('dev'));
app.use(jsonParser);
app.use(urlencodedParser);
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public'))); //love it
app.use('/', index); //this is fine
...
index.js
var express = require('express');
const path = require('path');
var router = express.Router();
router.use(function timeLog(req, res, next) {
console.log('Time: ', Date.now());
next();
});
router.use('/', express.static(path.join(__dirname, './404'))); // HALP!
module.exports = router;
を404 '対'/404 ')。私はこれを "localhost:3000/error"と入力してテストしています。したがって、パスが '/ error'の場合、親パスは '/'を使用する必要があります。ドキュメントは、私のルートが最後に置かれている限り、それはまだ動作するはずだと述べています。 express.staticを使わずにテストし、コンソールにエラーを出力するanon関数を使用しました。
express.static()を2回使用することはできませんか?
はい、複数の 'express.static()'を使うことができます。それは単なるミドルウェアであり、あなたが望むだけの数を持つことができます。彼らは登録した順序で検索されます。あなたが達成しようとしていることはまったく明らかではありません。スタティックルーティングのヘルプについては、ファイルシステムに特定のファイルをロードする正確なURLの例をいくつか表示し、ファイルシステム内のファイルの場所を正確に表示してください。 – jfriend00
パスを使用することはできませんか?私は、ホームページのほかに '/'というパスで 'express.static()'を使いたいと思っています。言い換えれば、 'router.use('/'、express.static(path.join(__ dirname、' ./404 ');' not working?なぜ静的で、単にconsole.logをテストすると動作するのですか? – DeadSupra
参考404カスタム404ページでは、何らかの形でexpress.static()を必要としません。通常は、最後のミドルウェアとして404ミドルウェアハンドラを作成し、次にファイルを作成する 'res.sendFile()'を作成します。 http://expressjs.com/en/starter/faq.html。完成したHTMLファイルをクライアント側に送信するだけの場合(サーバーサイドのレンダリングなし)、 ' 404ミドルウェアでは 'res.sendFile(someLocalFilePath)'を使用しています。 – jfriend00