Почему не работает роутинг в Express.js через Router?

Не могу заставить работать приложение через объект Router в Express.

Структура приложения следующая (то, что имеет отношение к проблеме):
index.js
fn.js
/routes/getSettings.js

Код в index.js
const express = require('express');
const getSettingsRouter = require('./routes/getSettings');
const app = express();

app.use('/getSettings', getSettingsRouter);


Код getSettings.js
const express = require('express');
const router = express.Router();
const fn = require('../fn.js');

router.get('/getSettings', async (req, res) => {
    let response = await fn.getSettings();
    res.type('json');
    res.send(response);
});

module.exports = router;


В результате по пути /getSettings выдается 404. Если же засунуть код роутинга в index.js (соответственно заменив router.get на app.get), все работает корректно. Подозреваю, что проблема или в путях, или в экспорте-импорте, но самостоятельно заставить работать как положено не могу.
  • Вопрос задан
  • 1131 просмотр
Пригласить эксперта
Ответы на вопрос 3
marginBottom
@marginBottom
Исправить
app.use('/getSettings', getSettingsRouter);
на
app.use('/', getSettingsRouter);
Ответ написан
Комментировать
hzzzzl
@hzzzzl
Тут ты сделал роут /getSettings/getSettings
Ответ написан
Комментировать
monochromer
@monochromer
DIVeloper
Мне кажется, правильнее заменить в файле /routes/getSettings.js это
router.get('/getSettings',  async (req, res) => { /*...*/ })

на это
router.get('/', async (req, res) => { /*...*/ })
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы