Как устранить ошибку «Следующий модуль отсутствует в файловой системе»?


9

Я получаю следующую ошибку на сайте Drupal 8.

Следующий модуль отсутствует в файловой системе

Похоже, что пользовательский модуль был установлен и удален без его удаления.

Как я могу исправить эту ошибку?


Используете ли вы управление конфигурацией на сайте?
Адриан Сид

Да, я использую это
Кевин

Некоторое продвижение с проблемой? Я хочу знать, в конце концов, как вы решаете проблему, это может прийти мне тоже в любом проекте.
Адриан Сид

В Drupal 8.7.3 я получаю «следующий модуль отсутствует в файловой системе: php в drupal_get_filename ()», но когда я пытаюсь установить модуль php, я получаю сообщение об ошибке, которое уже существует в ядре. Ошибка не позволяет мне удалить что-либо. Вчера я обновился до 8.7.3, а сегодня до 8.5.3 и не могу избавиться от ошибки. Кэш очищался каждый раз, и все модули, о которых я знаю, были восстановлены. Я вижу заметки о Drush, но как установить его на 8.7.3?
WilliamK

Ответы:


11

Если у вас Drupal Console, то быстрый способ это исправить - создать модуль с тем же именем компьютера, а затем удалить его.

$ drupal generate:module

Затем введите имя машины в соответствующем запросе и примите значения по умолчанию для всего остального.

$ drush pm-uninstall

Затем вы можете удалить вновь созданный модуль из файловой системы и продолжить свой день.

(Примечание: вам может понадобиться сохранить этот сгенерированный модуль, иначе ошибка вернется. В этом случае, если вам нужно установить модуль contrib с тем же именем, удалите сгенерированный модуль после добавления модуля contrib. Затем очистите кеш. )


2
Это был самый простой вариант после того, как приведенный выше SQL-запрос не сработал.
Крис Чарлтон

Это помогло решить мою ошибку для модуля не найден.
Акшай Савант

Если кому-то нужна помощь в установке Drupal Console, я нашел эту страницу полезной. Имейте в виду, что вы захотите установить Drupal Console Launcher глобально, и Drupal Console локально (в корне проекта вашей установки Drupal).
Doomd

10

Предполагая, что вы удалили неважный пользовательский модуль, который не требует запуска какой-либо процедуры удаления, вы можете использовать следующую команду Drush.

  • Drupal 7

    drush sql-query "DELETE from system where type = 'module' AND name = 'MYMODULE';"
  • Drupal 8

    drush sql-query "DELETE FROM key_value WHERE collection='system.schema' AND name='MYMODULE';"

См. Как исправить «Предупреждения« Следующий модуль отсутствует в файловой системе ... » для получения дополнительной информации и альтернатив.


1
Я пробовал несколько раз, и это для D8 не работает по крайней мере для D8.7. Я бы порекомендовал решение ниже с генерацией фиктивного модуля и затем установкой.
Марко

3

Теперь с модулем управления конфигурацией конфигурация модулей хранится в файле core.extension.yml.

Перейдите к редактированию файла и попробуйте найти отсутствующий модуль в файловой системе, затем удалите строку и импортируйте config ( drush cim).

Если это не работает, но вы нашли модуль, создайте его снова (только папку и действительный файл .info.yml) и снова введите drush cimкоманду. Это удалит модуль.


4
Это работает, но правильный способ - восстановить модуль и удалить его. Если этот модуль предоставляет схемы, конфигурацию или около того, он останется в системе, и в противном случае вам придется очистить его вручную.
Бердир

1
@ Бердир, если вы не можете найти пользовательский модуль, мы можем сделать что-то другое?
Адриан Сид

Не совсем, тогда вам нужно сделать это вручную, как предложено выше, с помощью drush cedit или import / export в файле core.extension.
Бердир

0

Я исправил это, используя drush и composer. Получите модуль с require, установите и удалите с помощью drush, затем удалите с помощью composer.

composer require drupal/missing_module
drush en missing_module
drush pmu missing_module
composer remove drupal/missing_module

! Шаг с, drush enвероятно, не является обязательным

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.