こんにちは、私はノードが初めてで、Express でルーティングの問題が発生しています。ノード/noSQLを使用してテストプロジェクトを作成し、学習するためのミニMVCフレームワークを作成しようとしています。ほとんどのコードは、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 がこのルートを使用するように見えますか?
私が間違っていることについてのアイデアはありますか?ありがとう!