【发布时间】:2019-05-16 10:19:10
【问题描述】:
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.log(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.log('Server is running on port 3000')
});
我希望我的中间件 2 会阻止所有其他路由,但我的其他路由工作正常。我的代码是否有任何错误或我正在学习的内容不再有效?
【问题讨论】:
-
该问题不包含其他用户可能复制的问题。请参阅 stackoverflow.com/help/mcve 和 stackoverflow.com/help/how-to-ask 。 我希望我的中间件 2 会阻止所有其他路由,但我的其他路由工作正常。 - 这不太可能,只要您的代码符合您发布的代码。 '中间件 2' 创建一个响应并且不调用
next()。除了express.static之外的其他中间件都没有机会运行。故事结束。 -
@estus 也许你必须在答案中告知、描述、解决它而不是评论,因为你的答案是正确的。
-
@elia 在这一点上没有什么可以回答的,因为这个问题没有被正确提出并且属于离题类别。 OP 询问发布的代码中不存在的行为。
-
@estus “除了 express.static 之外的其他中间件没有机会运行”澄清了我的理解。我正在访问“/”工作正常,因为保存静态文件的中间件位于中间件 2 之上。谢谢
-
很高兴这有帮助。