使用函数对象的Node.js自定义中间件

时间:2019-07-31 00:28:55

标签: node.js express

在Express.js中,我在制作自己的中间件时遇到了问题。我知道中间件应该是一个函数,但是中间件函数可以在数组内部。 例如:

module.js:

module.exports = {
  function1: function(req, res) {
    console.log('function1'); 
    //second edit.
    I want to return something as well
    return 'hello world';
    //if i add next(); it wont call the next();
  },
  function2: function(req, res) {
     console.log('function2');
  }
}

app.js:

const express = require('express')
, middleware = require('./module')
, app = express();

app.use(middleware.function1);
app.use(middleware.function2);

app.get('/', (req, res) => {
  //this is an edit: i want to use some code here like
  res.send('Hello World');
  middleware.function1();
});

app.listen(8080);

当我这样做时,网页不会加载。有帮助吗?

1 个答案:

答案 0 :(得分:0)

在定义中间件函数function1和function2时,缺少了重要的部分 next 函数(该回调是触发序列中的下一个中间件的功能)。

您看过https://expressjs.com/en/guide/writing-middleware.html吗?

在下面的代码中,您没有将req,res传递给中间件功能。

app.get('/', (req, res) => {
  middleware.function1();
});

或直接按以下方式调用

app.get('/', middleware.function1);