Unable to find constructor for: – Error H5P en Moodle:

ricardo

Autor & programador

Descripción de error Unable to find constructor for: en Moodle y H5P y de cómo lo pude solucionar.

Unable to find constructor for

Moodle es uno de los administradores de sistemas de aprendizaje más utilizado con más de 300 millones de usuarios en todo el mundo. Esta plataforma de código abierto contiene muchas herramientas didácticas, a la vez gratuitas y otras de pago, que enriquecen el entorno de aprendizaje digital.

Una de esas herramientas de acceso libre es el proyecto H5P, con una gran cantidad de recursos que hacen de los cursos en línea más atractivos e inmersivos. Esta librería no sólo se puede instalar en Moodle, sino que en otras plataformas de manejo de contenido como WordPress.

No todo es color de rosa – error «Unable to find constructor for»

Sin embargo, como todas las cosas no es perfecto. Me ha sucedido que algunas de estas herramientas pertenecientes a la librería H5P, no funcionan correctamente. No se muestran en pantalla o aparecen errores, como que ha sido imposible encontrar un archivo o en la consola del navegador «Unable to find constructor for»

Peor aún, me sucedió que la herramienta Question Set no funcionaba en un sitio, ¡pero en otro de iguales características si!

Busqué en muchos foros, y me encontré con personas que les había sucedido lo mismo, pero lamentablemente, en otras instalaciones no sucedía por lo que el error no es repetible. Esto es un problema para los seguidores o trackers de bugs de software, ya que si no puedes replicar el problema no es posible aceptarlo como un error. O bien, no había respuestas o las soluciones propuestas por la comunidad no han resuelto el problema.

¿Qué sucedió entonces?

Fue un largo camino de experimentar. Primero hice una copia del sitio de producción en otro servidor para ver si se replicaba el problema. Respaldé la base de datos, respaldé el directorio de datos o Moodledata, y respaldé el directorio de la instalación de Moodle. Luego monté todo en un servidor aparte. Logré duplicar el sitio para hacer pruebas.

Al intentar insertar un recurso H5P en el sitio replicado apareció nuevamente la falla. Es decir, me llevé con los respaldos el problema.

Desde la administración de Moodle, desinstalé todas las librerías involucradas que causaban la falla, pero no se solucionó.

Instalé una nueva versión de Moodle, la 3.11.6+, el problema seguía allí. Por lo tanto, no era la instalación de Moodle o el software de Moodle. El problema radicaba en la base de datos o en el directorio Moodledata.

Probé entonces con los permisos del directorio Moodledata, lo cambié fuera de public_html como lo recomienda el paso a paso de la instalación. Pero el problema seguía allí.

Decidí crear un directorio vacío para Moodledata. Con esto, todas las imágenes o multimedios que hubiese subido antes no estarían y tal vez la falla se iría también. No fue así.

Entonces, no es el software de Moodle, no es el directorio Moodledata ni sus permisos. La base de datos.

La solución

Entré en la base de datos. Para ello hay que tener conocimientos de base de datos relacionales MySql. Moodle contiene las librerías y los contenidos incrustados de H5P en una serie de tablas.

Con la herramienta phpmyadmin encontré las tablas de H5P dentro de la base de datos. Las cuatro primeras corresponden a los contenidos H5P incrustados en los cursos. Las cuatro restantes, a las librerías instaladas.

Entonces, decidí vaciar todas las tablas. Me quedaría sin los contenidos incrustados previamente, pero debía probar. Además, estaba en el sitio replicado, así que no problema.

Revisé las librerías instaladas de H5P en Moodle y no aparecía ninguna. Entonces busqué la tarea programada de H5P que se encarga periódicamente de buscar en H5P.org todas las librerías y sus actualizaciones y las instala en forma automática. La configuré de manera que se ejecutara inmediatamente. Al hacerlo, las librerías de H5P volvieron, hice la prueba con Question Set y AHA! funcionó.

Ahora, sólo debía restaurar los contenidos H5P previamente insertados en los cursos y todo se recuperó.

Este procedimiento es sumamente delicado. Lo hice de esta manera ya que no pude encontrar solución en ningún foro ni en alguna comunidad. Si lo intentas, debes hacer respaldo de TODO.

El siguiente es el paso a paso o check list para realizar esta delicada tarea.

  • Respaldo Moodledata
  • Respaldo base de datos
  • Pasar a modo mantenimiento
  • Respaldo Moodle software
  • Respaldo de cada actividad H5P previamente instalada e incrustada en algún recurso y que se encontraba en funcionamiento.
  • Respaldo específico de las tablas de H5P
  • Vaciado de las tablas de H5P (No borrado, sólo vaciado)
  • Configuración de la tarea programada
  • Revisar que las herramientas de H5P vuelven a estar instaladas
  • Restauración de las actividades que contenían H5P previamente y que funcionaban. O bien, restauración de las tablas H5P que contienen los recursos incrustados.
  • Restauración de la tarea programada a su valor por defecto
  • Deshabilitar el modo mantenimiento.

Espero que este artículo sea de ayuda y que se pueda encontrar una mejor solución.

Sitio diseñado y desarrollado por Kimundigital – Tema Elementor