Wersja Instalatora Magento2 dla modułu nie jest określona

24

Zainstalowałem lokalną kopię Magento 2. Mam problem z niestandardowym modułem.

Postępowałem zgodnie ze strukturą plików / folderów

app/code/Ps/HelloWorld/etc/module.xml:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Ps_HelloWorld" schema_version="0.0.1" setup_version="0.0.1" />
</config>

Wewnątrz tego pliku mam następujące: Odświeżiłem pamięć podręczną sklepu, a następnie otrzymałem:

Wersja instalacyjna dla modułu „Ps_HelloWorld” nie jest określona.

Yogesh Karodiya
źródło
usuń, schema_versiona następnie spróbuj
Manashvi Birla
nie działa
Yogesh Karodiya
Spróbuj wyczyścić pamięć podręczną w wierszu polecenia, korzystając bin/magento cache:flushz folderu publicznego
Smartie,
Również schema_version jest usuwany w późniejszych wersjach beta z tego, co słyszałem
Smartie
ten błąd jest również zgłaszany, jeśli moduł jest wymieniony w config.php, ale nie jest zainstalowany
roman204

Odpowiedzi:

15

Próbować

php -f bin/magento module:enable --clear-static-content Module_Name
php -f bin/magento setup:upgrade

Zakładając, że prowadzisz bieżącą gałąź master, a nie gałąź dev

Renon Stewart
źródło
czy możesz wyjaśnić szczegółowo, dlaczego musimy uruchomić php -f bin/magento setup:upgradepolecenie
Yogesh Karodiya,
Ssh na serwerze, a następnie cd do folderu głównego magento
Renon Stewart
RS jest oficjalnym linkiem do magento2 określającym wszystkie te polecenia.
huzefam
2
możesz uzyskać listę wszystkich poleceń, uruchamiając php -f bin/magento, albo dostarczy również jaki jest cel każdego polecenia
amit_game
33

W moim przypadku było to uprawnienie do pliku / folderu tego modułu.

Apache nie mógł odczytać pliku konfiguracyjnego.

Zastosuj następujące uprawnienia do katalogu modułów.

chmod 775 <module path> -R
Nahid
źródło
1
Tak, w moim przypadku to był problem .. dzięki;)
Adnan
Po ogromnych poszukiwaniach zobaczyłem tę odpowiedź i spróbowałem jako ostatnia próba. O mój boże, mój problem został rozwiązany. Dziękuję bardzo @Nahid Bro :)
Zapytaj
To rozwiązało również mój problem
Hassana Al-Jeshi
11

Źródło odniesienia: https://magentoexplorer.com/magento-2-setup-version-for-module-is-not-specified-how-to-fix (w moim przypadku ten błąd wystąpił podczas tworzenia nowego modułu Magento 2 )

Ten błąd może wystąpić z powodu złych uprawnień do pliku / folderu modułu, możesz zmienić uprawnienia do folderu modułu w następujący sposób

chmod 775 <module path> -R

Jest jeszcze jedna możliwość, że zapomniałeś dodać register.php i composer.json w module. Spróbuj dodać następujący plik

/app/code/Namespace/Module/registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Namespace_Module',
    __DIR__
);

i /app/code/Namespace/Module/composer.json

{
    "name": "namespace/module",
    "description": "namespace",
    "require": {
      "php": "~5.5.0|~5.6.0|~7.0.0",
      "magento/framework": "100.0.*",
      "magento/module-ui": "100.0.*",
      "magento/module-config": "100.0.*",
      "magento/module-contact": "100.0.*"    
    },
    "type": "magento2-module",
    "version": "100.0.0",
    "license": [
        "OSL-3.0",
        "AFL-3.0"
    ],
    "extra": {
        "map": [
            [
                "*",
                "Namespace/Module"
            ]
        ]
    },
    "autoload": {
        "files": [ "registration.php" ],
        "psr-4": {
            "namespace\\module\\": ""
        }
    }
}

Na koniec uruchom te polecenia

php -f bin/magento module:enable --clear-static-content Module_Name
magento setup:upgrade

Mam nadzieję że to pomoże!

Brian
źródło
4

Dodatkowy scenariusz, w którym mi się to przydarzyło, polegał na przeprowadzeniu repozytorium mojego projektu, a moduł został usunięty z systemu plików. Chociaż było to celowe, pozostała w tym czasie konfiguracja dla niego w pliku konfiguracyjnym Magento.

Usunięcie odwołania do modułu app/etc/config.phprozwiązało mój problem.

TL; DR

Najpierw próbowałem wyłączyć moduł za pomocą polecenia CLI, module:disable VendorName_ModuleNamea odpowiedź z CLI była następująca Unknown module(s): 'VendorName_ModuleName'. Zakładam, że dzieje się tak, ponieważ brakowało go już w systemie plików. Ponieważ nie było już zamiaru korzystania z modułu, ręczne usunięcie go z app/etc/config.phptego punktu wydaje się i tak właściwe.

Darren Felton
źródło
2
Tl; dr jest dłuższy niż początkowy akapit ...
Stevie G
1
@StevieG Nadal się uśmiecham za każdym razem, kiedy wracam do tego hahahaha ... Kiedy to napisałem, nie wiedziałem, co oznacza TL; DR. Część „tl; dr” to dodatkowe informacje, które należy pominąć, jeśli tak zdecydujesz, czy coś.
Darren Felton,
1

Otwórz bazę danych i znajdź tabelę setup_module.

Twój moduł Ps_HelloWorldpowinien znajdować się w tej tabeli.

Jeśli nie znaleziono, spróbuj wprowadzić ręcznie.

Anees
źródło
0

Problem: plik app/etc/config.phpzostał skopiowany z innej instancji magento (z powodu złej manipulacji plikiem). Z tego powodu miałem te same objawy, które opisano w tym pytaniu.

Rozwiązaniem było usunięcie wszystkich nazw modułów, których nie było w przypadku Magento, w którym wystąpił problem, i zadziałało dobrze.

Zauważ, że lepszym rozwiązaniem byłoby prawdopodobnie bin/magento module:status, a następnie bin/magento module:disabledla wszystkich modułów z problemami.

Cedric
źródło