当我尝试将中间件函数导出到module.exports对象时,为什么会出现“下一个不是函数”?
我有一个中间件函数写在我的logger.js
模块中,然后我导入到app.js
并使用
// ------ File : logger.js ------ //
function log(req, res, next) {
console.log('Logging details ... ');
next();
}
module.exports = log;
// ------ File : app.js -------- //
const logger = require('./logger');
app.use(logger);
回答如下:
app.use(logger.log());
这将立即调用logger.log,不传递任何参数。无论logger.log返回什么,都将传递到app.use。由于您没有传入任何参数,因此接下来是未定义的,从而导致该异常。
相反,做:
app.use(logger.log);
这会将logger.log传递给app.use。稍后,将调用logger.log,传入正确的参数。
当我尝试将中间件函数导出到module.exports对象时,为什么会出现“下一个不是函数”?
我有一个中间件函数写在我的logger.js
模块中,然后我导入到app.js
并使用
// ------ File : logger.js ------ //
function log(req, res, next) {
console.log('Logging details ... ');
next();
}
module.exports = log;
// ------ File : app.js -------- //
const logger = require('./logger');
app.use(logger);
回答如下:
app.use(logger.log());
这将立即调用logger.log,不传递任何参数。无论logger.log返回什么,都将传递到app.use。由于您没有传入任何参数,因此接下来是未定义的,从而导致该异常。
相反,做:
app.use(logger.log);
这会将logger.log传递给app.use。稍后,将调用logger.log,传入正确的参数。
评论列表 (0)
- 暂无评论