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

我有以下结构

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

但是我得到错误,无法find模块。 你能build议我如何轻松获得我所有的路线? 谢谢 :)

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

里面的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'))