Javascript 使用斜杠存在路由问题的节点

Javascript 使用斜杠存在路由问题的节点,javascript,node.js,express,Javascript,Node.js,Express,我用车把而不是翡翠来布线,但我认为我面临的问题不是车把,而是nodejs的一般布线问题 在app.js中,我有这些 var exphbs = require('express-handlebars'); app.engine('handlebars', exphbs({defaultLayout: 'layout'})); app.set('view engine', 'handlebars'); app.use('/catalog', require('./routes/catalog'));

我用车把而不是翡翠来布线,但我认为我面临的问题不是车把,而是nodejs的一般布线问题

在app.js中,我有这些

var exphbs = require('express-handlebars');
app.engine('handlebars', exphbs({defaultLayout: 'layout'}));
app.set('view engine', 'handlebars');
app.use('/catalog', require('./routes/catalog'));
然后在routes文件夹中有一个文件夹call catalog,其中有catalog.js

在catalog.js中,我是这样做的

var express = require('express');
var router  = module.exports = express.Router();
router.get('/', function(req, res) {
        res.render('catalog/index');
});

当我转到时,它工作得很好,但当我试图运行任何想法时,它被排除在布局之外。

在节点路由中非常普通,因此
/catalog
/catalog/
不匹配,但是有一个中间件解决了这一问题,例如我使用的@adeneo,它会自动在末尾添加一个斜杠,但它破坏了一切。是的,这可能很棘手,但是你要么编写自己的中间件,使用现成的东西,要么使用两条路径,Express不能同时捕获
/catalog
/catalog/
,或者它实际上是这样,它只是将它们视为两个不同的URL,所以忽略斜杠。但在我的情况下,我不能创建任何像catalog/add这样的更深层次的路由,它被排除在布局之外。你知道吗?在Express4.x中,“/catalog”在“/catalog/”anway不会自动得到同样的待遇吗?参见“严格路由”-