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'
);

启动应用程序后,在 /usr/local/share/perl5/Mojolicious/Routes/Route.pm 第 23 行的子例程“Mojolicious::Routes::Route::AUTOLOAD”上出现错误 Deep recursion。

我不知道这里发生了什么。谁能帮我。

谢谢!

4

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;
    };
}

这至少会给你问题的名称和路径。您也可以在其中放置一些递归跟踪,尽管它可能需要弄乱 agoto留下的小足迹。

于 2012-08-21T14:14:15.187 回答