Node.js: централизовать несколько маршрутов в один файл маршрута - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь централизовать весь мой маршрутный файл в индексный файл и поместить этот индексный маршрутный файл в мой основной файл приложения. Я пытаюсь подписаться на эту тему

Я добавил файл app.js. И маршруты / папка ниже:

Когда я пытаюсь получить любой из URL, как упомянуто ниже, он показывает ошибку 404.

app.js:

const indexRouter  = require('./routes/index');
app.use('/', indexRouter);

файл маршрутов:

-- index.js
-- author.js
-- book.js

index.js:

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

// Get Home Page of The Web Application
router.get('/', function(req, res) {
  res.send('Library Home Page');
});

router.use('/author', require('./author').router);
router.use('/book', require('./book').router);

module.exports = router;

author.js:

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

var AuthorController = require('../controllers/authorController');

router.get('/', AuthorController.authorList);

router.get('/:id', AuthorController.authorDetail);

router.get('/create', AuthorController.authorCreateForm);

module.exports = router;

book.js:

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

var BookController = require('../controllers/bookController');

router.get('/', BookController.bookList);

router.get('/:id', BookController.bookDetail);

router.get('/create', BookController.bookCreateForm);

module.exports = router;

Я хочу получить доступ к URL следующим образом:

Home:
/

Author:
/author/
/author/1
/author/create

Book:
/book/
/book/1
/book/create

1 Ответ

3 голосов
/ 23 октября 2019

module.exports = router - экспорт по умолчанию, поэтому require('./author').router относится к неопределенному свойству на маршрутизаторе, оно должно быть:

router.use('/author', require('./author'));

И в вашей записи сервера:

app.use(indexRouter); // No `'/'` as first param
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...