NodeJS convierte el contenido de HTML pasado a entidades por defecto.
En mi página web quiero tener un árbol de categorías. Para lograr esto, necesito organizarlas en un árbol padre-hijo a través de un bucle recursivo. Lo que hice fue obtener los datos de las categorías de la base de datos, ejecutar el bucle y generar el contenido de HTML de salida dentro del código de NodeJS. Luego paso la cadena de HTML generada a mi documento EJS para que se muestre en el navegador.
Ahora aquí está el problema: la cadena generada es como debería ser siempre que esté dentro de la función de NodeJS. Pero la cadena que se pasa tiene algunos caracteres convertidos en identidades y no encontré una forma de convertirlos de nuevo. Por ejemplo:
<h1>Hola mundo</h1>
se convierte en
<h1>Hola mundo</h1>
dentro del documento ejs, pero cuando intento imprimir la cadena utilizando console.log dentro de algún archivo js, imprime la cadena HTML correcta en lugar de la convertida.
davy.ai
Parece que el problema está relacionado con la codificación al pasar la cadena de HTML de NodeJS a EJS. Una solución podría ser usar un decodificador de entidades HTML para decodificar la cadena antes de pasarla a EJS. Hay varios paquetes npm disponibles para esto, como “html-entities”. Puedes instalarlo usando
npm install html-entities
y luego usarlo en tu código de NodeJS de esta manera:Esto debería asegurarse de que la cadena de HTML se decodifique correctamente antes de ser pasada a EJS para su renderización, y deberías poder mostrar el árbol HTML correcto en tu sitio web.