我正在构建一个Express应用程序并遇到一些路由问题。我的'/'路线工作正常,但其他路线不是。我已经调查了人们发布的其他问题,这些问题都没有解决我的问题。
我有一个routes / index.js文件:
module.exports = function(app){
app.use('/', require('./routes/home'));
app.use('/about', require('./routes/about'));
}
我的路线/ home.js: - 工作!
const express = require('express');
const router = express.Router();
router.get('/', function(req, res) {
res.render('app/home');
});
module.exports = router;
我的路线/ about.js: - 不工作!
const express = require('express');
const router = express.Router();
router.get('/about', function(req, res) {
res.render('app/about');
});
module.exports = router;
当我转到'/ about'时,我在浏览器中看到此错误 - '无法获取/关于'
home.html和about.html文件都位于相同的views目录中。
这里的任何帮助将非常感谢!
答案 0 :(得分:11)
让我引用明确的文件:
路由将立即匹配其路径后面的任何路径“/”。例如:app.use(' / apple',...)将匹配“/ apple”,“/ apple / images”,“/ apple / images / news”等。 see express doc
这是"没有工作"因为您在/about
和app.use
中设置了router.get
。尝试请求/about/about
,你会发现这是有效的(只是不是你想要的)..
现在只需更改/about
中的routes/about.js
,然后重新运行并尝试请求/about
,它就能正常运行:)
答案 1 :(得分:7)
您的路线设为/about/about
。
将about.js
更改为:
const express = require('express');
const router = express.Router();
router.get('/', function(req, res) {
res.render('app/about');
});
module.exports = router;