const express = require('express');
const fs = require('fs');
const app = express();
app.set('view engine', 'hbs');
app.use(express.static(__dirname + '/public'));
// MIDDLEWARE 2
app.use((req, res, next) => {
res.render('test');
});
//MIDDLEWARE 3
app.use((req, res, next) => {
let now = new Date().toString();
let log = `At ${now} a peroson visited ${req.method} ${req.url}`;
console.info(log);
fs.appendFile('visitors.log', log + '\n', err =>{
if (err) return err;
});
next();
});
app.get('/', (req, res) => {
res.send(index.html);
});
app.get('/about', (req, res) => {
res.render('about', {
title: 'About Us'
});
});
app.listen(3000, () => {
console.info('Server is running on port 3000')
});
Я ожидаю, что мое промежуточное ПО 2 заблокирует все другие маршруты, но другие мои маршруты работают нормально. Есть ли ошибка в моем коде или то, что я изучаю, больше не актуально?
@estus, возможно, вы должны сообщить, описать, решить это в ответ, а не комментировать, потому что ваш ответ правильный.
@elia Здесь нечего ответить, потому что вопрос был задан неправильно и попадает в категорию не по теме. OP спрашивает о поведении, которого нет в опубликованном коде.
@estus "У других промежуточных программ, кроме express.static, шансов не запуститься" проясняет мое понимание. Я обращался к '/' работал нормально, потому что промежуточное ПО, сохраняющее статические файлы, находится поверх промежуточного ПО 2. Спасибо.
Рад, что это помогло.





После res.render нужно вызвать в next()
Вопрос не содержит проблемы, которая могла бы быть воспроизведена другими пользователями. См. stackoverflow.com/help/mcve и stackoverflow.com/help/how-to-ask. Я ожидаю, что мое промежуточное ПО 2 заблокирует все другие маршруты, но другие мои маршруты работают нормально. - это очень маловероятно, если ваш код соответствует коду, который вы опубликовали. «промежуточное ПО 2» создает ответ и не вызывает
next(). Другие промежуточные программы, кромеexpress.static, не работают. Конец истории.