Express router ile çalışırken alacağımız hatalarda bir tanesi
throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
^
TypeError: Router.use() requires a middleware function but got a Object
şeklinde alınan hatadır. Bu hatanın oluş nedeni oluşturulan route export etmemektir. Bir route oluştururken

const express = require('express')
const pageController = require('../controllers/pageConrollers');
const router = express.Router();
router.route('/').get(pageController.getIndexPage);
şeklinde bitirirdiğimizde yani oluşturduğumuz router nesnesini dışarı aktarmadığımızda yukarıdaki hata oluşmaktadır. Bunu engellemek için
exports.module = router;
şeklinde dışarı aktarmamız hatanın düzelmesi için yeterli olacaktır. Kod aşağıdakine benzer olmalıdır.
const express = require('express')
const pageController = require('../controllers/pageConrollers');
const router = express.Router();
router.route('/').get(pageController.getIndexPage);
module.exports = router;
Hata Neden Oluşuyor?
throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
^
TypeError: Router.use() requires a middleware function but got a Object
Hatasının oluşma nedenine baktığımızda, router nesnesini dışarı aktarmadığımızda, route kullanacağımız app.js (veya hangi dosya ise)
const pagesRoutes = require('./pageRoutes');
route çağrıldığında oluşturduğumuz route import edilemeyecektir. Oysa uygulama
app.use('/', pagesRoutes);
satırında bir middleware fonksiyon beklemektedir. Middleware fonksiyon export edilmediği için bu satırda hata meydana gelir ve bu nedenle de uygulama hata verecektir.
