【发布时间】:2017-07-13 19:04:28
【问题描述】:
我有以下结构
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/'));
但是我得到了找不到模块的错误。您能建议我如何轻松使用所有路线吗?谢谢:)
【问题讨论】:
-
添加
app/controllers/index.html导出所有路由器。这将允许您require('./app/controllers') -
app.use(require('./app/controllers/home'));这一行似乎不正确。你确定你没听错吗? -
@wilusdaman 我相信你的意思是
index.js。是的,这解决了我的问题。但是,我仍然不明白为什么 'require('./app/controllers')' 和 'require('./app/controllers/index')' 都有效。我认为第一个不应该工作..你能解释一下吗? -
啊,是的,我的意思是
index.js。require('./app/controllers/index')就像要求任何其他文件/模块一样工作。require('./app/controllers')也有效,因为它是 feature of Node's module system(普通 JS)。
标签: javascript node.js express routes