で働くん2つのコールバックがエラーhandling.Ifためのもので、基本的に、ここ2、コールバックと1つのgetルートどのようにコールバックが実際に以下のノードのjs
app.get('/login', function(req, res, next) {
res.sendFile(__dirname + '/public/views/login.html');
});
app.use(function (req, res, next) {
console.log("first callback 1");
var err = new Error('Not Found');
err.status = 404;
next(err);
console.log("first callback 2");
});
app.use(function (err, req, res, next) {
// set locals, only providing error in development
console.log("second callback");
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
console.log("error send");
});
を持っている私のコードで私はアプリを実行し、localhost:3000/home
に行き、コールが戻ってくるので、経路がなく、404エラーが発生するためです。
localhost:3000/login
に行った場合、login.htmlページが表示されていますが、コールバックが呼び出されていません。エラーはありませんが、コールバックの最初のコンソールメッセージが表示されるはずです。コールバックを呼び出さない?
私がコールバックについて読んだのは、パスを指定しなければ、すべてのルートを呼び出すということです。しかし、なぜここにいないのですか?誰かがこれを読んで私が間違っている場合は私をクリアする時間がかかります。
あなたの 'app.get( '/ login' ...)を一番下に置いてみてください。 –
@AlexPánekは今すぐ取得しました。しかし、それはどういう意味ですか。コールバックはすべてのルートを呼び出す必要があります。しかし、なぜそれが最下位になると呼び出されなかったのですか。これを理解するのを助けてください。 – user7350714
詳細を知っているが、ミドルウェア(app.use')を追加する前に追加されたルートハンドラ( 'app.get')はミドルウェアについて知らないようだ。 –