执行催化剂服务器脚本时遇到以下问题。
Couldn't load class (Catalyst::Script::Server) because: "ensure_class_loaded" is not exported by the Catalyst::Utils module
Can't continue after import errors at /opt/madhan/lib/perl5/Catalyst/ScriptRole.pm line 7.
BEGIN failed--compilation aborted at /opt/madhan/lib/perl5/Catalyst/ScriptRole.pm line 7.
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/Module/Runtime.pm line 313.
Compilation failed in require at /opt/madhan/lib/perl5/Catalyst/ScriptRunner.pm line 13.
Catalyst::ScriptRunner::find_script_class("Catalyst::ScriptRunner", "testsite", "Server") called at /opt/madhan/lib/perl5/Catalyst/ScriptRunner.pm line 42
Catalyst::ScriptRunner::run("Catalyst::ScriptRunner", "testsite", "Server") called at /opt/madhan/testsite/script/testsite_server.pl line 8
perl 5.8.8 会支持 Catalyst MVC 吗?
最佳答案
这是 Catalyst 中的错误。 Catalyst::ScriptRole(自 2012 年以来!)中有一些类型检查代码已完全损坏,但损坏仅在特定情况下可见——即,如果脚本向 Catalyst 提供了 loader_class
: :ScriptRole 不是已经加载的类(可能从来没有人加载过),或者如果系统有一个非常旧的 UNIVERSAL.pm 版本例如 perl 5.8 附带的那个。这是您遇到的第二种情况。
我已经为 Catalyst-Runtime 推送了一个补丁来解决这个问题; 希望它能尽快发布它包含在Catalyst-Runtime 5.90115中.
关于Catalyst 对 Perl 5.8.8 的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42883017/