Beispiel Modul "oeloggerdemo" - Fehlermeldungen

Hallo zusammen, ich versuche das Modul Skeleton aus folgender Anleitung zu installieren: https://docs.oxid-esales.com/developer/en/6.2/development/modules_components_themes/module/tutorials/module_setup.html
Umgebung ist Oxid 6.2, php 7.2 und MySQL 5.7

Folgendes habe ich gemacht:

  1. cd <shop_directory>/source/modules/xyz git clone “https://github.com/OXID-eSales/logger-demo-module.git” loggerdemo
    
  2. Den autoload-Pfad in der composer.json auf denk korrekten Pfad abgeändert.
    
  3. php vendor/bin/oe-console oe:module:install-configuration source/modules/xyz/loggerdemo
    
  4. cd <shop_directory>
    
  5. composer config repositories.oxid-esales/logger-demo-module path source/modules/xyz/loggerdemo 
    
  6. composer require oxid-esales/logger-demo-module:*
    

Dabei bekomme ich allerdings folgende Fehlermeldung:

Your requirements could not be resolved to an installable set of packages.

Problem 1
- The requested package oxid-esales/logger-demo-module * is satisfiable by oxid-esales/logger-demo-module[dev-master, dev-master-OXDEV-706] but these conflict with your requirements or minimum-stability.

Was soll ich hier machen, um das Modul zu installieren?
Danke für eure Unterstützung.

in deiner shop composer.json ist vermutlich folgendes definiert: "minimum-stability": "stable",
das beisst sich mit der modulinstallation, da das keine stable-version (release) ist.

Ok. Was ist hier die Best Practice? Ich mag das ungern für den ganzen Shop umstellen, da sonst die ganzen “unstable” Versionen installiert werden, oder?
Und wenn ich das Modul in der composer.json versioniere z.B. mit “1.0.0” ist das auch nicht so gewollt und führt zu einem weiteren Fehler:

Your requirements could not be resolved to an installable set of packages.

Problem 1
- Installation request for oxid-esales/logger-demo-module * -> satisfiable by oxid-esales/logger-demo-module[1.0.0].
- oxid-esales/logger-demo-module 1.0.0 requires oxid-esales/event_logger_demo dev-master -> satisfiable by oxid-esales/event_logger_demo[dev-master] but these conflict with your requirements or minimum-stability.

Installation failed, reverting ./composer.json to its original content.

zB. modul nicht über composer installieren, sondern manuell …

Der Trick ist, wenn etwas in der Root composer.json explizit als dev verlangt wird, funktioniert das auch mit minimum stability stable. Also statt das Modul zu versionieren kann man dev-master verwenden. Das führt dann allerdings auch zu dem Fehler dass event_logger_demo als Abhängigkeit trotzdem stable sein müsste, da kann man dann in der root composer.json das Flag für dev setzen, ohne Versionsangabe:

"require": {
  "oxid-esales/oxideshop-metapackage-ce": "v6.2.1",
  "oxid-esales/event_logger_demo": "@dev",
  "oxid-esales/logger-demo-module": "dev-master"
},

Warum? Der Pfad sollte stimmen.

Vielen Dank erstmal an die Rückmeldungen! Das ist wirklich sehr nett und hilfreich.

Ich habe versucht das umzusetzen und folgendes gemacht:
Aus der Modul composer.json habe ich folgenden Befehl rausgenommen:

"require": {
  "oxid-esales/event_logger_demo": "dev-master"
},

Stattdessen habe ich in die Projekt composer.json folgendes hinzugefügt/angehängt:

"require": {
  "oxid-esales/oxideshop-metapackage-ce": "v6.2.1",
  "oxid-esales/event_logger_demo": "@dev",
  "oxid-esales/logger-demo-module": "dev-master"
},

Dann habe ich composer update ausgeführt und das Modul noch einmal manuell über die Console installiert über php vendor/bin/oe-console oe:module:install-configuration source/modules/xyz/loggerdemo.

Dabei ist composer fehlerfrei durchgelaufen und das Modul steht in der 1.yaml.

Wenn ich das Modul nun aber im Backend aktiviere kommen folgende Fehlermeldungen:

#0 [internal function]: Symfony\Component\Config\Resource\ClassExistenceResource::throwOnRequiredClass(‘OxidEsales\Esho…’) #1 /home/abc/module.xyz.net/source/modules/xyz/loggerdemo/Command/ReadLogsCommand.php(15): spl_autoload_call(‘OxidEsales\Esho…’) #2 /home/abc/module.xyz.net/vendor/composer/ClassLoader.php(444): include(’/home/abc/…’) #3 /home/abc/module.xyz.net/vendor/composer/ClassLoader.php(322): Composer\Autoload\includeFile(’/home/abc/…’) #4 [internal function]: Composer\Autoload\ClassLoader->loadClass(‘OxidEsales\Logg…’) #5 [internal function]: spl_autoload_call(‘OxidEsales\Logg…’) #6 /home/abc/module.xyz.net/vendor/symfony/config/Resource/ClassExistenceResource.php(82): class_exists(‘OxidEsales\Logg…’) #7 /home/abc/module.xyz.net/vendor/symfony/dependency-injection/ContainerBuilder.php(371): Symfony\Component\Config\Resource\ClassExistenceResource->isFresh(0) #8 /home/abc/module.xyz.net/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php(55): Symfony\Component\DependencyInjection\ContainerBuilder->getReflectionClass(‘OxidEsales\Logg…’) #9 /home/abc/module.xyz.net/vendor/symfony/dependency-injection/Compiler/Compiler.php(140): Symfony\Component\Console\DependencyInjection\AddConsoleCommandPass->process(Object(Symfony\Component\DependencyInjection\ContainerBuilder)) #10 /home/abc/module.xyz.net/vendor/symfony/dependency-injection/ContainerBuilder.php(789): Symfony\Component\DependencyInjection\Compiler\Compiler->compile(Object(Symfony\Component\DependencyInjection\ContainerBuilder)) #11 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Validator/ServicesYamlValidator.php(76): Symfony\Component\DependencyInjection\ContainerBuilder->compile() #12 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Validator/ServicesYamlValidator.php(52): OxidEsales\EshopCommunity\Internal\Framework\Module\Setup\Validator\ServicesYamlValidator->buildContainer() #13 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Service/ModuleConfigurationHandlingService.php(75): OxidEsales\EshopCommunity\Internal\Framework\Module\Setup\Validator\ServicesYamlValidator->validate(Object(OxidEsales\EshopCommunity\Internal\Framework\Module\Configuration\DataObject\ModuleConfiguration), 1) #14 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Service/ModuleConfigurationHandlingService.php(34): OxidEsales\EshopCommunity\Internal\Framework\Module\Setup\Service\ModuleConfigurationHandlingService->validateModuleConfiguration(Object(OxidEsales\EshopCommunity\Internal\Framework\Module\Configuration\DataObject\ModuleConfiguration), 1) #15 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Service/ModuleActivationService.php(94): OxidEsales\EshopCommunity\Internal\Framework\Module\Setup\Service\ModuleConfigurationHandlingService->handleOnActivation(Object(OxidEsales\EshopCommunity\Internal\Framework\Module\Configuration\DataObject\ModuleConfiguration), 1) #16 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Bridge/ModuleActivationBridge.php(50): OxidEsales\EshopCommunity\Internal\Framework\Module\Setup\Service\ModuleActivationService->activate(‘oeloggerdemo’, 1) #17 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Application/Controller/Admin/ModuleMain.php(70): OxidEsales\EshopCommunity\Internal\Framework\Module\Setup\Bridge\ModuleActivationBridge->activate(‘oeloggerdemo’, 1) #18 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Core/Controller/BaseController.php(534): OxidEsales\EshopCommunity\Application\Controller\Admin\ModuleMain->activateModule() #19 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(345): OxidEsales\EshopCommunity\Core\Controller\BaseController->executeFunction(‘activateModule’) #20 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(279): OxidEsales\EshopCommunity\Core\ShopControl->executeAction(Object(OxidEsales\Eshop\Application\Controller\Admin\ModuleMain), ‘activateModule’) #21 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(142): OxidEsales\EshopCommunity\Core\ShopControl->_process(‘OxidEsales\Esho…’, ‘activateModule’, NULL, NULL) #22 /home/abc/module.xyz.net/vendor/oxid-esales/oxideshop-ce/source/Core/Oxid.php(27): OxidEsales\EshopCommunity\Core\ShopControl->start() #23 /home/abc/module.xyz.net/source/index.php(16): OxidEsales\EshopCommunity\Core\Oxid::run() #24 /home/abc/module.xyz.net/source/admin/index.php(12): require_once(’/home/abc/…’) #25 {main}

Im Standard war der Pfad oe/loggerdemo. Bei mir liegt das Modul aber in xyz/loggerdemo. Daher habe ich den Pfad geändert.

Muss man nicht, man setzt ja nur das stability flag in der root json.

Das ist der Stacktrace, die Fehlermeldung steht oben drüber. Hab das Modul mal installiert und musste in ReadlogsCommand.php

use OxidEsales\EshopCommunity\Internal\Console\AbstractShopAwareCommand;

ändern in

use OxidEsales\EshopCommunity\Internal\Framework\Console\AbstractShopAwareCommand;