Javascript Can';t在Express应用程序中连接路线

Javascript Can';t在Express应用程序中连接路线,javascript,node.js,express,routes,Javascript,Node.js,Express,Routes,我有以下结构 project -app/ --controllers/ ---home.js --models/ ---home.js --views/ ---home.html -db/ --db.js -index.js my controller home.js如下所示: var express = require('express'); var router = express.Router(); var database = require('../models/

我有以下结构

project

-app/

--controllers/

---home.js

--models/

---home.js

--views/

---home.html

-db/

--db.js

-index.js
my controller 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/'));

但我得到的错误是找不到模块。你能建议我如何轻松地使用所有路线吗?谢谢:)

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

Inside index.js

app.use("/home", require('./app/controllers/home'));
app.use("/about", require('./app/controllers/about'));
app.use("/etc", require('./app/controllers/etc'));
内部/应用程序/控制器/主路径和其他路径

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'))

添加导出所有路由器的
app/controllers/index.html
。这将允许您
require('./app/controllers')
app.use(require('./app/controllers/home')此行似乎不正确。你确定你是在跟踪吗?@wiludaman我相信你的意思是
index.js
。是的,这解决了我的问题。但是,我仍然不明白为什么“require('./app/controllers')”和“require('./app/controllers/index')”都能工作。我认为第一个不应该起作用。。你能解释一下吗?啊,是的,我是说
index.js
<代码>要求('./app/controllers/index')
的工作原理与要求任何其他文件/模块的工作原理相同
require('./app/controllers')
也可以工作,因为它是一个(公共JS)。这个
app.get(“/”,…)
不应该是
router.get(“/”,…)
router.use("/", require('path/to/another-router.js'))