【问题标题】:Node.js Middleware block the program, why program is disable to run?Node.js 中间件阻塞了程序,为什么程序无法运行?
【发布时间】: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/mcvestackoverflow.com/help/how-to-ask我希望我的中间件 2 会阻止所有其他路由,但我的其他路由工作正常。 - 这不太可能,只要您的代码符合您发布的代码。 '中间件 2' 创建一个响应并且不调用 next()。除了express.static 之外的其他中间件都没有机会运行。故事结束。
  • @estus 也许你必须在答案中告知、描述、解决它而不是评论,因为你的答案是正确的。
  • @elia 在这一点上没有什么可以回答的,因为这个问题没有被正确提出并且属于离题类别。 OP 询问发布的代码中不存在的行为。
  • @estus “除了 express.static 之外的其他中间件没有机会运行”澄清了我的理解。我正在访问“/”工作正常,因为保存静态文件的中间件位于中间件 2 之上。谢谢
  • 很高兴这有帮助。

标签: node.js express


【解决方案1】:

res.render之后需要拨打next()

【讨论】:

    猜你喜欢
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2011-04-08
    • 2013-03-10
    相关资源
    最近更新 更多