最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

当我尝试将中间件函数导出到module.exports对象时,为什么会出现“下一个不是函数”?

IT培训 admin 4浏览 0评论

当我尝试将中间件函数导出到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)

  1. 暂无评论