2

こんにちは、私はノードが初めてで、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 がこのルートを使用するように見えますか?

私が間違っていることについてのアイデアはありますか?ありがとう!

4

1 に答える 1