Как управлять несколькими экспресс-маршрутизаторами для перенаправления друг друга

#javascript #node.js #express #routes

#javascript #node.js #экспресс #маршруты

Вопрос:

Я использую Express.

Я столкнулся с проблемой, из-за которой я не могу перенаправить из одной папки маршрута в другую папку маршрута. Чтобы объяснить дальше, у меня есть app.js и папка routes в том же месте.

Это мой app.js маршрутизирует промежуточное программное обеспечение

 app.use(homeRoutes);
app.use('/blog', apiRoutes);
  

У меня есть промежуточное программное обеспечение для запроса get, как показано ниже

 // in routes/homeRoutes.js
router.get('/', (req, res) => {
    res.redirect('/blog');
});
  

предполагается, что это связано с

 // in routes/apiRoutes.js
router.get('/', blogController.blog_index);
  

и

 // in controller
const blog_index = (req, res) => {
    Blog.find().sort({ createdAt: -1 })
        .then(result => res.render('index', { blogs: result, title: "List" }) )
        .catch(err => console.log(err));
  

Однако я получаю ошибку 404.
Но когда я переместил приведенный ниже код в app.js это работает.

 // in routes/homeRoutes.js
router.get('/', (req, res) => {
    res.redirect('/blog');
});
  

Я хотел бы знать, как заставить это работать в двух отдельных файлах маршрутов.
Чтобы я мог организовать и сделать свой проект максимально чистым.

Пожалуйста, сообщите мне о его решении и любых других советах, которые вы могли бы мне дать. Заранее большое вам спасибо.

Ответ №1:

в routes / homeRoutes.js вы должны написать это

 const express = require('express);
const router = express.Router();

router.get('/', (req, res) => {
    res.redirect('/blog');
});

module.exports = router;
  

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

1. Я вставил это в routes/homeRoutes.js и это не сработало

2. я добавил app.js файл. поскольку у меня возникла проблема, о которой сообщалось, я прокомментировал app.use(homeRoutes); и создал маршруты в app.js

3. Из обзора: @keppodon вы нажали не ту кнопку редактирования. Пожалуйста, отредактируйте сообщение, чтобы предоставить более подробную информацию о вашем приложении, вместо того, чтобы пытаться поместить их в ответ. Спасибо.