Express Router.use requires callback function error

I am getting following error while trying to add middleware to my application:

 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;
}

This is how I am adding my middleware:

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

I am using express 4.x version.

You define your module as a function, you have to call it.

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