Я новичок в Express, но я продолжаю получать ошибку 404, потому что что-то делает запрос GET на "/json/version". Он проходит через первое приложение app.use('/')
и добавляет данные сеанса, затем игнорирует два маршрутизатора, а затем запускает обработку ошибок 404. Кто-нибудь знает, откуда это может произойти? Это держит мой проект, и я очень расстроен.
Я нашел кого-то с той же проблемой здесь, но ничего не было очень полезно (насколько я могу судить). Большая часть этого приложения генерируется из express-generator
, причем только сеанс добавляется мной, но я не могу найти документацию из express-session
которой говорится, что это ожидаемое поведение. Ниже мой код.
// 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;
Заранее спасибо!
Был рассмотрен в этом выпуске.
Нажмите "Настроить" в chrome://inspect
и удалите порт 3000
app.get(['/json*', '/favicon.ico'], function(req, res) { res.status(204); });