Node.js 将路由绑定到'/';是否响应Express中的所有404?

Node.js 将路由绑定到'/';是否响应Express中的所有404?,node.js,model-view-controller,express,routes,Node.js,Model View Controller,Express,Routes,嗨,我是node的新手,我在Express中遇到了一个路由问题。我正在尝试创建一个迷你MVC框架,用它创建测试项目,并学习node/noSQL。大部分代码都基于Express repo中的MVC示例()。除此之外,我还在这里的帮助下添加了可扩展控制器: 代码: 问题在第33-43行 if ( key == 'index' && name == 'main' ) { method = 'get'; path = '/'; } else if ( key == 'in

嗨,我是node的新手,我在Express中遇到了一个路由问题。我正在尝试创建一个迷你MVC框架,用它创建测试项目,并学习node/noSQL。大部分代码都基于Express repo中的MVC示例()。除此之外,我还在这里的帮助下添加了可扩展控制器:

代码:

问题在第33-43行

if ( key == 'index' && name == 'main' ) {
    method = 'get';
    path = '/';
}
else if ( key == 'index' ) {
    method = 'get';
    path = '/' + name;
}
else {
    throw new Error( 'unrecognized route: ' + name + '.' + key );
}
在这个块中,我试图做的是将主控制器分配给localhost/并将其他每个控制器分配给localhost/controller/。如果我将第35行更改为/main(而不是/),那么404将正确地通过引导进入app/index.js中的错误处理程序:

// load controllers
require( './boot' )( app, { verbose: !module.parent } );

// assume "not found" in the error msgs is a 404
app.use( function( err, req, res, next ) {
    // treat as 404
    if ( ~err.message.indexOf( 'not found' ) ) return next( );

    // log it
    console.error( err.stack );

    // error page
    res.status( 500 ).render( '5xx' );
});
代码保持原样,如果我转到任何无效的URL,localhost/deep,localhost/doop,它们都会返回主模块吗?出于某种原因,绑定到“/”会使任何无效URL使用此路由吗


你知道我做错了什么吗?谢谢

将app.use更改为app.all解决了此问题。有人知道区别是什么吗?

这里解释了区别: