无法在Express应用程序中连接路由

时间:2017-07-13 19:04:28

标签: javascript node.js express routes

我有以下结构

project

-app/

--controllers/

---home.js

--models/

---home.js

--views/

---home.html

-db/

--db.js

-index.js

我的控制器home.js看起来像这样:

var express = require('express');
var router = express.Router();
var database = require('../models/home');
var path = require('path');

router.get("/", function(request, response) {
    response.sendFile(path.join(__dirname, '../views', 'home.html'));
});

module.exports = router;

现在我想让这条路线变得有用,所以在index.js我有:

var express = require('express');
var app = express();
var port = 3000;

app.use(require('./app/controllers/home')); //<-- this is what I ask for

app.listen(3000, function(err ) {
    //......
})

但是现在我有更多只是路由到'家',所以而不是

 app.use(require('./app/controllers/home'));
 app.use(require('./app/controllers/about'));
 app.use(require('./app/controllers/etc'));

我读到我可以使用:

app.use(require('./app/controllers/'));

但是我发现无法找到该模块的错误。您能否建议我如何轻松获取所有路线?谢谢:))

1 个答案:

答案 0 :(得分:3)

如果我理解你的问题,你正试图将路由器路由到不同的相对路径。 您可以通过将该路径作为第一个参数传递来设置相对路径。然后路由器内部使用app.get / use / ...的任何路由都将从该相对路径开始。

内部index.js

app.use("/home", require('./app/controllers/home'));
app.use("/about", require('./app/controllers/about'));
app.use("/etc", require('./app/controllers/etc'));

在./app/controllers/home和其他路线

router.get("/", ...) // this will be located at localhost/home
router.get("/myhouse, ...) // this will be located at localhost/home/myhouse

另外值得一提的是,您可以在路由器中路由路由器

router.use("/", require('path/to/another-router.js'))