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