嗨,我是 node 新手,我遇到了 Express 的路由问题。我正在尝试创建一个迷你 MVC 框架来创建测试项目并学习 node/noSQL。大部分代码都基于Express 存储库中的 MVC 示例( https://github.com/visionmedia/express/tree/master/examples/mvc )。除此之外,我在此处的帮助下添加了可扩展控制器:如何在 ExpressJS 中创建可扩展控制器
代码: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 );
}
我在这个块中试图做的是分配主控制器来响应 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 使用此路由?
关于我做错了什么的任何想法?谢谢!