#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.js4. Вот и все. Спасибо, Черт возьми.