简体   繁体   中英

Node.js: Centralize multiple routes into one route file

I am trying to centralize all of my route file into a index file and place that index route file in my main app file. I am trying to follow this thread

I have added app.js file. And the routes/ folder below:

When i am trying to get any of the url as mentioned below, it's showing the 404 error.

app.js:

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

routes file:

-- 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;

I want to access the url as follows:

Home:
/

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

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

module.exports = router is a default export so require('./author').router refers to an undefined property on the router, it should be:

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

And in your server entry:

app.use(indexRouter); // No `'/'` as first param

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM