将路由绑定到“/”将响应Express中的所有404?

嗨,我是新来的节点,我有快速路由问题。 我正在尝试创build一个迷你MVC框架来创buildtesting项目并学习node / noSQL。 大多数代码都是基于Express回购中的MVC示例( https://github.com/visionmedia/express/tree/master/examples/mvc )。 除此之外,我在这里添加了可扩展的控制器: 如何在ExpressJS中创build可扩展的控制器

代码: https : //github.com/monsterlane/node-runner

问题出现在https://github.com/monsterlane/node-runner/blob/master/app/boot/index.js第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 ); } 

我想在这个块中做的是分配主控制器响应本地主机/和每一个其他控制器响应本地主机/控制器/。 如果我将第35行更改为/ main(而不是/),则404将正确地通过启动并进入app / index.js中的error handling程序:

 // 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,本地主机/深,本地主机/ doop他们都返回主模块? 由于某种原因,它看起来像绑定到“/”使任何无效的URL使用此路线?

任何想法,我做错了什么? 谢谢!

改变app.use到app.all解决了这个问题。 有谁知道有什么区别?