Node.js 将路由绑定到'/';是否响应Express中的所有404?
嗨,我是node的新手,我在Express中遇到了一个路由问题。我正在尝试创建一个迷你MVC框架,用它创建测试项目,并学习node/noSQL。大部分代码都基于Express repo中的MVC示例()。除此之外,我还在这里的帮助下添加了可扩展控制器: 代码: 问题在第33-43行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
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解决了此问题。有人知道区别是什么吗?这里解释了区别: