寻求帮助找出一个难倒的错误。
我创建了一个 perl Catalyst 插件,旨在为 Catalyst 5.90115 的 redirect_and_detach ($c->redirect_and_detach) 提供一种直接替换方法。我的替换方法只调用 Catalyst 的 redirect_and_detach:
package MyApp::Catalyst::Plugin::Logger;
...
sub my_redirect_and_detach {
my ($c, $uri, $status) = @_;
$c->redirect_and_detach($uri, $status);
}
我意识到这没有任何值(value),我只是在测试让这个简单的案例首先起作用。
然后我替换这个工作调用...
$c->redirect_and_detach($someuri);
通过调用我的新插件方法...
$c->my_redirect_and_detach($someuri);
我得到以下(缩写/混淆)错误:
Parameter #2 (undef) to Catalyst::Plugin::RedirectAndDetach::redirect_and_detach was an 'undef', which is not one of the allowed types: scalar
at /usr/local/share/perl/5.26.1/Catalyst/Plugin/RedirectAndDetach.pm line 18.
Catalyst::Plugin::RedirectAndDetach::redirect_and_detach(undef, "/myuri", undef) called at /var/app/lib/MyApp/Catalyst/Plugin/Logger.pm line 95
MyApp::Catalyst::Plugin::Logger::my_redirect_and_detach(MyApp=HASH(0x5628f93e4e60), "/myuri") called at ...
我了解 Catalyst 方法规范要求定义参数 #2。但我不明白为什么堆栈跟踪显示第一个参数为 undef(认为那是 $c 的类/包)。我验证了 $c 作为第一个参数成功传递,并在 my_redirect_and_detatch() 内部工作以提取请求参数。
有人看到这个问题吗?
提前致谢。
最佳答案
结果是 Catalyst 的 redirect_and_attach(),而 $status 如果未提供则默认为 undef,不喜欢实际的 undef $status 参数。解决方案是避免传递未定义的 $status。
关于perl - 为什么我的 perl Catalyst redirect_and_detach 替换插件方法失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60961689/
相关文章:
emacs - 如何将ctags格式文件转换为etags格式文件?
python - Flask App 进行多次登录尝试的奇怪行为
javascript - mxgraph 避免边缘重叠节点或其他边缘
maven - Visual Studio Code 终端无法使用代理
java - 删除后 Netty SslHandler 握手超时
php - 实时服务器上的 Laravel Coinbase API Http 异常错误但适用于 X
unit-testing - 在 Racket 中使用模拟对象进行猴子修补
python - 计数没有。使用 dask 的大型 Parquet 文件中的行数没有内存错误