requires a middleware function

Express Js – Router.use() Requires a Middleware Function But Got … Hatası

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

Router.use requires a middleware function but got a
Express Js Router Hatası
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.

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir