Это очень распространенная точка замешательства. Вероятная причина в том, что вы пошли на /a
в браузере, и браузер сделал два запроса. Один для /favicon.ico
и один для /a
(это то, что браузеры делают, когда вы переходите на новый сайт, для которого они ранее не кэшировали иконку - маленький глиф, который они отображают, который представляет веб-сайт в некоторых местах в браузере) .
Если вы зарегистрируете URL-адрес запроса в промежуточном программном обеспечении и в обработчике 404, вы увидите подробности происходящего:
const express = require('express')
const app = express()
app.use((req, res, next) => {
console.log('\n\nRequest for: ', req.url);
next();
})
app.get('/a', (req, res) => {
console.log('/a: route terminated')
res.send('/a')
})
app.use((req, res) => {
console.log('route not handled for ', req.url);
res.send('404 - not found');
});
app.listen(3000, () => {
console.log('listening on 3000')
})