在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);
当我这样做时,网页不会加载。有帮助吗?
答案 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);