Node.js Express.js条件路由器.all()
我不明白为什么从2016开始的URL不起作用。它只是永远载入 mainNode.js Express.js条件路由器.all(),node.js,express,Node.js,Express,我不明白为什么从2016开始的URL不起作用。它只是永远载入 main(/)、admin(/admin/*)和/home可以正常工作 function stringStartsWith(string, prefix) { return string.slice(0, prefix.length) == prefix; } router.get('/', csrfProtection, indexOnly, indexController.index); router.get('/admi
(/)
、admin(/admin/*)
和/home
可以正常工作
function stringStartsWith(string, prefix) {
return string.slice(0, prefix.length) == prefix;
}
router.get('/', csrfProtection, indexOnly, indexController.index);
router.get('/admin', adminOnly, adminController.index);
router.all('/*', function(req, res, next) {
if (req.originalUrl == '/home') {
next();
} else if (stringStartsWith(req.originalUrl, "/admin")) {
router.all('/admin/*', function(req, res, next) {
if (req.originalUrl == '/admin') {
next(); // it doesn't do anything, just allows the route above to work (admin welcome page.)
} else {
res.sendFile(path.resolve('views/backend/index.html'));
}
});
} else if (stringStartsWith(req.originalUrl, "/2016")) {
router.all('/2016/*', function(req, res, next) {
res.sendFile(path.resolve('views/frontend/index/index.html'));
});
} else {
res.sendFile(path.resolve('views/frontend/index.html'));
}
});
为什么把2016年的路线放在其他路线里面?它应该是另一条与其他路线类似的路线:
function stringStartsWith(string, prefix) {
return string.slice(0, prefix.length) == prefix;
}
router.get('/', csrfProtection, indexOnly, indexController.index);
router.get('/admin', adminOnly, adminController.index);
router.all('/2016/*', function(req, res, next) {
res.sendFile(path.resolve('views/frontend/index/index.html'));
});
router.all('/*', function(req, res, next) {
if (req.originalUrl == '/home') {
next();
} else if (stringStartsWith(req.originalUrl, "/admin")) {
router.all('/admin/*', function(req, res, next) {
if (req.originalUrl == '/admin') {
next(); // it doesn't do anything, just allows the route above to work (admin welcome page.)
} else {
res.sendFile(path.resolve('views/backend/index.html'));
}
});
} else {
res.sendFile(path.resolve('views/frontend/index.html'));
}
});
你不应该在路由中添加另一条路由,这毫无意义,整个条件都是毫无意义的,应该删除。我的错,谢谢。我把它们分开了。