Почему это express.js вам не нравится моя маршрутизация и вы не используете мою функцию промежуточного программного обеспечения?

#node.js #express

Вопрос:

Кто-нибудь может помочь мне с этим сообщением?

 D:myProjectstestnode_modulesexpresslibrouterindex.js:458
      throw new TypeError('Router.use() requires a middleware function but got a '   gettype(fn))
      ^

TypeError: Router.use() requires a middleware function but got a undefined
    at Function.use (D:myProjectstestnode_modulesexpresslibrouterindex.js:458:13)
    at Function.<anonymous> (D:myProjectstestnode_modulesexpresslibapplication.js:220:21)
    at Array.forEach (<anonymous>)
    at Function.use (D:myProjectstestnode_modulesexpresslibapplication.js:217:7)
    at Object.<anonymous> (D:myProjectstestapp.js:15:5)
 

app.js

 const express=require('express');
const app = express();
const config = require('./config/config');
const {getPeopleHandler} = require('./routes/people');
const nunjucks = require('nunjucks');
const PORT = config.port || 3000;

nunjucks.configure('pages', {
    autoescape: true,
    express: app
});

app.use(express.static(__dirname   '/'));

app.use('/people', getPeopleHandler);

app.listen(PORT, (err)=> {
    console.log(`up amp; running on port ${PORT}`);
});
 

people.js

 const express=require('express');
const router = express.Router();
const callAPI = require('../services/api');
const config = require('../config/config');

const getPeople = async (req, res) => {
    const url = config.getPeopledataUrl;
    const response = await callAPI(url);
    res.locals.list = response[1];
    res.render('people.html');
};

router.get('/people', getPeople);

module.exports = getPeople;
 

получить-людей-обработчик,Джей си

 const callAPI = require('../../services/api');
const config = require('../../config/config');

const getPeopleHandler = async (req, res) => {
    console.log('in getPeople')
    const url = config.getPeopledataUrl;
    const response = await callAPI(url);
    console.log(response[1]);
    res.locals.list = response[1];
    res.render('people.html');
};

module.exports = {getPeopleHandler};
 

Я думаю, что проблема в app.js где я пытаюсь импортировать getPeopleHandler из people.js даже несмотря на то, что там это не определено. Вместо этого я экспортировал маршрутизатор, и я почти уверен, что это правильно. Это просто случай — я думаю — использования его в app.js как-нибудь. Или я все совершенно неправильно понял?

Комментарии:

1. Ваш app.js и people.js оба выглядят одинаково. Не знаю, почему у вас оба js прослушивают порты. Это делает его похожим на то, что оба приложения являются разными экспресс-приложениями. И да, ваш импорт из people.js это неверно

2. Вау. Это смущает. Я неправильно вставил. Теперь отредактировал публикацию, чтобы я меньше походил на придурка.

3. Вместо этого я экспортировал маршрутизатор, что, я уверен, правильно -> Да, вам нужно экспортировать маршрутизатор, что ожидается > app.use('/path', router) в app.js

4. Вот и все. Спасибо, Черт возьми.