En cours d'exécution du serveur interne Catalyst, situé au scripts/MyApp_server.pm
, l'erreur suivante s'affiche. Y a-t-il quelqu'un qui peut m'aider à cet égard? Je n'ai pas modifié l'un des fichiers créés par catalyst.pl. Je viens d'exécuter le fichier catalyst.pl MyApp, puis d'exécuter scripts/MyApp_server.pl -r pour tester si Catalyst fonctionne ou pas. C'est la seule chose que j'ai faite! J'ai réinstallé plusieurs fois Catalyst et ses modules dépendants en utilisant yum et cpan. Mais ça ne marche plus.Erreur lors de la tentative de démarrage d'un serveur Catalyst
Merci!
le message d'erreur:
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
Les codes autour de la ligne 2681 dans /usr/local/share/perl5/Catalyst.pm sont tels que ci-dessous:
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');
}
}
Le contenu de la lib/MyApp.pm est comme ci-dessous:
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;
Vous aurez probablement besoin de publier les quelques lignes de code autour de la ligne 2681 dans Catalyst.pm afin que quelqu'un de familier avec lui puisse faire une suggestion. Essayez les lignes de 2670 à 2690, et peut-être le nom du sous-marin. –
Les lignes de code autour de la ligne 2681 sont les suivantes: sub setup_home { my ($ class, $ home) = @_; if (mon $ env = Catalyst :: Utils :: env_value ($ class, 'ACCUEIL')) { $ home = $ env; } $ home || = Catalyst :: Utils :: home ($ class); if ($ home) { #Je me souviens d'avoir été récemment réprimandé pour avoir assigné des valeurs de configuration comme ceci ===== CECI EST LIGNE 2681 ==== $ class-> config -> {home} || = $ home ; $ class-> config -> {root} || = Chemin d'accès :: Class :: Dir-> new ($ home) -> sous-répertoire ('root'); } } –
Devinez, nous serons en mesure de trouver les sources de Catalyst en ligne. Cependant, puisque le framework fonctionne habituellement, je parie que MyApp.pm fait quelque chose de méchant. Aussi: il n'y a généralement pas de fichier 'scripts/MyApp_server.pm'. – innaM