現時点では、他のすべてのルートの下にある次のものがあります。
app.get('*', function(req, res){
console.log('404ing');
res.render('404');
});
そしてログによると、ルートが上記で一致している場合でも発火しています。何も一致しない場合にのみ発火させるにはどうすればよいですか?
すべてのルートの最後に配置する必要があります。
ルートコントロールの受け渡しの2番目の例を見てください。
var express = require('express')
, app = express.createServer();
var users = [{ name: 'tj' }];
app.all('/user/:id/:op?', function(req, res, next){
req.user = users[req.params.id];
if (req.user) {
next();
} else {
next(new Error('cannot find user ' + req.params.id));
}
});
app.get('/user/:id', function(req, res){
res.send('viewing ' + req.user.name);
});
app.get('/user/:id/edit', function(req, res){
res.send('editing ' + req.user.name);
});
app.put('/user/:id', function(req, res){
res.send('updating ' + req.user.name);
});
app.get('*', function(req, res){
res.send('what???', 404);
});
app.listen(3000);
または、一致しないすべてのルートが404を生成するため、何もできません。次に、このコードを使用して適切なテンプレートを表示できます。
app.error(function(err, req, res, next){
if (err instanceof NotFound) {
res.render('404.jade');
} else {
next(err);
}
});
エラー処理に記載されています。
あなたのブラウザはファビコンのリクエストをフォローアップしていると思います. そのため、要求されたページで 200 が成功した後、ログに 404 が表示されます。
ファビコン ルートを設定します。
これを使用できます
const express = require('express');
const app=express();
app.set('view engine', 'pug');
app.get('/', (req,res,next)=>{
res.render('home');
});
app.use( (req,res,next)=>{
res.render('404');
})
app.listen(3000);