【问题标题】:Express Router.use requires callback function errorExpress Router.use 需要回调函数错误
【发布时间】:2026-02-22 23:35:01
【问题描述】:

我在尝试将中间件添加到我的应用程序时遇到以下错误:

 throw new TypeError('Router.use() requires callback function');

MyMiddleware.js

module.exports = function(options) {
  var err = checkOptions(options);
  if(err) {
    throw err;
  }

  var middleware = function(req, res, next) {
      // do something here
  }

  return middleware;
}

这就是我添加中间件的方式:

var MyMiddleware = require('./server/middlewares/MyMiddleware');
var middleware = MyMiddleware(config);
router.use('/path', middleware);
app.use('/', router);

我使用的是 express 4.x 版本。

【问题讨论】:

  • 当你throw err时发生这种情况吗?
  • @Jordonias 我在服务器启动期间收到此错误
  • @Jordonias 不,这不是由于抛出错误
  • 你确定吗?在 if 语句中添加 console.log(err);
  • @Jordonias 是的,我 100% 确定,因为我还没有实现 checkOptions 它是空方法

标签: javascript node.js express callback middleware


【解决方案1】:

你将你的模块定义为一个函数,你必须调用它。

var MyMiddleware = require('./server/middlewares/MyMiddleware')();

【讨论】:

  • @user123 哦,好吧,你实际上是在正确使用它,忽略我的回答,你能在console.log middleware 变量之前router.use
  • 我有一个查询我正在尝试使用 sequelize 保存数组,但我收到 [错误:缺少维度值] 错误。我使用 http 发布请求作为“标签”发布数据:“['JAVA','REST','API']” 我使用 postgres 作为底层数据库