Node.js:将多个路由集中到一个路由文件中

tan*_*iya 2 javascript routes node.js express

我试图将所有路由文件集中到一个索引文件中,并将该索引路由文件放置在我的主应用程序文件中。我正在尝试关注这个线程

我已经添加了 app.js 文件。以及下面的routes/文件夹:

当我尝试获取下面提到的任何 url 时,它显示 404 错误。

应用程序.js:

const indexRouter  = require('./routes/index');
app.use('/', indexRouter);
Run Code Online (Sandbox Code Playgroud)

路线文件:

-- index.js
-- author.js
-- book.js
Run Code Online (Sandbox Code Playgroud)

索引.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;
Run Code Online (Sandbox Code Playgroud)

作者.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;
Run Code Online (Sandbox Code Playgroud)

书.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;
Run Code Online (Sandbox Code Playgroud)

我想访问的url如下:

Home:
/

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

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

Run Code Online (Sandbox Code Playgroud)

Dom*_*nic 5

module.exports = router是默认导出,因此require('./author').router引用路由器上未定义的属性,它应该是:

router.use('/author', require('./author'));
Run Code Online (Sandbox Code Playgroud)

在您的服务器条目中:

app.use(indexRouter); // No `'/'` as first param
Run Code Online (Sandbox Code Playgroud)