¿Cómo resolver el error "Falta el siguiente módulo del sistema de archivos"?

9

Recibo el siguiente error en un sitio de Drupal 8.

Falta el siguiente módulo del sistema de archivos

Parece que se instaló y eliminó un módulo personalizado sin desinstalarlo.

¿Cómo puedo solucionar este error?

Kevin
fuente
¿Está utilizando la gestión de configuración en el sitio?
Adrian Cid Almaguer
Sí, estoy usando eso
Kevin
¿Algunos avanzan con el problema? Quiero saber al final cómo resuelve el problema, esto también me puede llegar a mí en cualquier proyecto.
Adrian Cid Almaguer
En Drupal 8.7.3 obtengo "falta el siguiente módulo en el sistema de archivos: php en drupal_get_filename ()" pero cuando intento instalar el módulo php obtengo un error acerca de que ya existe en el núcleo. El error me impide desinstalar cualquier cosa. Ayer actualicé a 8.7.3 y hoy a 8.5.3 y no puedo evitar el error. La memoria caché se ha borrado cada vez y todos los módulos que conozco se han restaurado. Veo notas sobre Drush pero ¿cómo instalarlo en 8.7.3?
WilliamK

Respuestas:

11

Si tiene Drupal Console, entonces una forma rápida de solucionar esto es generar un módulo con el mismo nombre de máquina y luego desinstalarlo.

$ drupal generate:module

Luego escriba el nombre de la máquina en el indicador apropiado y acepte valores predeterminados para todo lo demás.

$ drush pm-uninstall

Luego puede eliminar el módulo recién generado del sistema de archivos y continuar con su día.

(Nota: es posible que necesite mantener ese módulo generado, de lo contrario el error volverá. En ese caso, si necesita instalar un módulo contrib con el mismo nombre, elimine el módulo generado después de agregar el módulo contrib. Luego borre el caché. )

naomi
fuente
2
Esta fue la opción más simple después de que la consulta SQL anterior no funcionara.
Chris Charlton
Ayudó a resolver mi error para el módulo no encontrado.
Akshay Sawant
Si alguien necesita ayuda para instalar Drupal Console, esta página me ha resultado útil. Tenga en cuenta que querrá instalar Drupal Console Launcher de forma global, y la consola de Drupal localmente (en la raíz del proyecto de su instalación de Drupal).
Doomd
10

Suponiendo que haya eliminado un módulo personalizado sin importancia que no necesita ninguna rutina de desinstalación para activarse, puede usar el siguiente comando 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';"

Consulte Cómo solucionar los mensajes de advertencia "Falta el siguiente módulo en el sistema de archivos ..." para obtener más información y alternativas.

leymannx
fuente
1
Lo intenté varias veces y esto para D8 no funciona al menos para d8.7. Recomendaría la solución a continuación con la generación del módulo ficticio y luego la desinstalación.
Marko Blazekovic
3

Ahora con el módulo de Gestión de configuración, la configuración de los módulos se almacena en el archivo core.extension.yml.

Vaya a editar el archivo e intente encontrar el módulo que falta en el sistema de archivos, luego elimine la línea e importe la configuración ( drush cim).

Si esto no funciona pero ha encontrado el módulo, vuelva a crear el módulo (solo la carpeta y un archivo .info.yml válido) y vuelva a ejecutar el drush cimcomando. Esto desinstalará el módulo.

Adrian Cid Almaguer
fuente
44
Esto funciona, pero la forma correcta es restaurar el módulo y desinstalarlo. Si ese módulo proporciona esquemas, configuración o algo así, permanecerá en el sistema y, de lo contrario, tendrá que limpiarlo manualmente.
Berdir
1
@ Berdir si no puede encontrar el módulo personalizado, ¿podemos hacer otra cosa?
Adrian Cid Almaguer
En realidad no, entonces debe hacerlo manualmente como se sugirió anteriormente con drush cedit o importar / exportar en el archivo core.extension.
Berdir
0

La forma en que lo arreglé fue usando drush y compositor. Obtenga el módulo con require, instale y desinstale con drush y luego retírelo con composer.

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

! El paso con drush enprobablemente no es necesario

Bo rislav
fuente