Soy nuevo en Express, pero sigo recibiendo un error 404 porque algo está haciendo una solicitud GET a '/json/version'. Pasa por la primera app.use('/') y agrega los datos de la sesión, luego ignora los dos enrutadores y luego activa el manejo de errores 404. ¿Alguien sabe de dónde puede estar viniendo? Está retrasando mi proyecto y estoy bastante frustrado.
Encontré a alguien con el mismo problema aquí , pero nada ha sido muy útil (hasta donde puedo decir). La mayor parte de esta aplicación se genera a partir de express-generator , y yo solo agrego la sesión, pero no puedo encontrar ninguna documentación de express-session que diga que este es el comportamiento esperado. A continuación se muestra mi código.
// Package requirements let createError = require('http-errors'), express = require('express'), session = require('express-session'), path = require('path'), cookieParser = require('cookie-parser'), logger = require('morgan'); // Local requirements let indexRouter = require('./routes/index'), usersRouter = require('./routes/users'); // App definition let app = express(); // View engine setup (EJS) app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); // Session data app.use(session({ secret: 'Super Secret', })); app.use(logger('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', (req, res, next) => { req.session.id = 1; next(); }); app.use('/', indexRouter); app.use('/', usersRouter); // Catch 404 and forward to error handler app.use(function(req, res, next) { next(createError(404)); }); // Error handler app.use(function(err, req, res) { // set locals, only providing error in development 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'); }); // Specifies Node.js port app.listen(3000, function() { console.log('Listening on port 3000') }); module.exports = app;¡Gracias por adelantado!