scripts/MyApp_server.pm
에있는 Catalyst 내부 서버를 실행하면 다음 오류가 발생합니다. 이 점에서 저를 도울 수있는 사람이 있습니까? catalyst.pl로 만든 파일을 변경하지 않았습니다. Catalyst를 실행했는지 여부를 테스트하기 위해 MyApp를 실행 한 다음 스크립트/MyApp_server.pl -r을 실행합니다. 이게 내가 한 유일한 일이야! yum과 cpan을 사용하여 Catalyst 및 그 종속 모듈을 여러 번 다시 설치했습니다. 하지만 다시는 작동하지 않습니다.Catalyst 서버를 시작할 때 오류가 발생했습니다.
감사합니다.
오류 메시지 :
Can't use an undefined value as a HASH reference at /usr/local/share/perl5/Catalyst.pm line 2681.
BEGIN failed--compilation aborted at /home/Ali/Lab/WEB/catalyst/MyApp3/script/../lib/MyApp3.pm line 20.
Compilation failed in require at /usr/local/lib/perl5/Class/MOP/Method/Wrapped.pm line 50
/usr/local/share/perl5/Catalyst.pm 라인 2,681 주변의 코드는 다음과 같다
sub setup_home {
my ($class, $home) = @_;
if (my $env = Catalyst::Utils::env_value($class, 'HOME')) {
$home = $env;
}
$home ||= Catalyst::Utils::home($class);
if ($home) {
#I remember recently being scolded for assigning config values like this
$class->config->{home} ||= $home; # THIS IS LINE 2681
$class->config->{root} ||= Path::Class::Dir->new($home)->subdir('root');
}
}
lib/MyApp.pm의 내용은 다음과 같습니다.
package MyApp;
use Moose;
use namespace::autoclean;
use Catalyst::Runtime 5.80;
# Set flags and add plugins for the application
#
# -Debug: activates the debug mode for very useful log messages
# ConfigLoader: will load the configuration from a Config::General file in the
# application's home directory
# Static::Simple: will serve static files from the application's root
# directory
use Catalyst qw/
-Debug
ConfigLoader
Static::Simple
/;
extends 'Catalyst';
our $VERSION = '0.01';
$VERSION = eval $VERSION;
# Configure the application.
#
# Note that settings in myapp.conf (or other external
# configuration file that you set up manually) take precedence
# over this when using ConfigLoader. Thus configuration
# details given here can function as a default configuration,
# with an external configuration file acting as an override for
# local deployment.
__PACKAGE__->config(
name => 'MyApp',
# Disable deprecated behavior needed by old applications
disable_component_resolution_regex_fallback => 1,
);
# Start the application
__PACKAGE__->setup();
=head1 NAME
MyApp - Catalyst based application
=head1 SYNOPSIS
script/myapp_server.pl
=head1 DESCRIPTION
[enter your description here]
=head1 SEE ALSO
L<MyApp::Controller::Root>, L<Catalyst>
=head1 AUTHOR
Ali Basirat
=head1 LICENSE
This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
1;
촉매제에 2681 줄 주변에 몇 줄의 코드를 게시해야 할 것입니다. 익숙한 사람이 제안을 할 수 있습니다. 2670에서 2690 사이의 행과 서브의 이름을 시도하십시오. –
2681 행의 코드 행은 다음과 같습니다. sub setup_home { my ($ class, $ home) = @_; if (my $ env = Catalyst :: Utils :: env_value ($ class, 'HOME')) { $ home = $ env; } $ home || = 촉매제 :: Utils :: home ($ class); if ($ home) { #이 설정 값을 할당하기 위해 최근에 꾸짖음을 기억합니다. =====이 줄은 2681 ==== $ class-> config -> {home} || = $ home ; $ class-> config -> {root} || = 경로 :: 클래스 :: 디렉토리 -> 새 ($ 홈) -> 하위 디렉토리 ('루트'); } } –
Google은 Catalyst 소스를 온라인에서 찾을 수 있습니다. 그러나 프레임 워크가 일반적으로 작동하기 때문에 MyApp.pm이 더러운 것을하고 있다고 확신합니다. 또한 일반적으로'scripts/MyApp_server.pm' 파일이 없습니다. – innaM