1

Mojolicious ブリッジを定義しました

my $foo = $route->bridge('/')->to(cb => sub {
    my $self = shift;
    return 1;
});
return $foo;

そして、私はこのようなルートを定義しています

$foo->route('/')->to(
    module      => 'test',
    controller  => 'test',
    action      => 'test'
);

$foo->route('/login')->to(
    module      => 'test1',
    controller  => 'test1',
    action      => 'test1'
);

アプリを起動すると、エラー Deep recursion on subroutine "Mojolicious::Routes::Route::AUTOLOAD" at /usr/local/share/perl5/Mojolicious/Routes/Route.pm line 23 が表示されます。

ここで何が起こっているのかわかりません。誰でも私を助けることができますか?

ありがとう!

4

1 に答える 1

1

できることの 1 つは、次のように AUTOLOAD サブを再定義してトレースをクラックすることです。

{   no warnings 'redefine';
    my $old_autoload = *Mojolicious::Routes::Route::AUTOLOAD{CODE};
    *Mojolicious::Routes::Route = sub { 
        Carp::cluck( "Trace from $Mojolicious::Routes::Route::AUTOLOAD\n - " );
        goto &$old_autoload;
    };
}

これにより、少なくとも問題の名前とパスがわかります。gotoそこに再帰追跡を入れることもできますが、残した小さなフットプリントを台無しにする必要があるかもしれません.

于 2012-08-21T14:14:15.187 に答える