Estoy ejecutando en un servidor de nodo y devolviendo el HTML para una URL determinada
server.get('*', async (request, response) => { const url = request.protocol + '://' + request.get('host') + request.originalUrl; const { html } = await renderPage(url, { manifest, preload: true, request, response }); //TODO: Insert script into html string in head response.end(html); });Sin embargo, lo que me gustaría es poder manipular el HTML antes de que responda.end(), por ejemplo, insertando un script en la sección principal de la cadena HTML... ¿Alguna idea sobre cómo hacer esto?
Estaba pensando al principio que de alguna manera podría usar html.replace(), pero ese no es el enfoque correcto, creo...
Cualquier ayuda sería muy apreciada :)
Sin conocer los tipos, pero si html es solo una cadena, el método .replace() es una forma adecuada de hacerlo. Dependiendo de si tiene control sobre las plantillas html que se representan, puede agregar un marcador de posición para agregar el script a un lugar determinado en el html.
Si no tiene control, prefiero agregarlo al final del cuerpo.
const script = `<script src="your/fancy/script.js" />`; html.replace(/(<\s*\/\s*body)/, `${scripts}\n$1`);debe poner el script como
<div>Some content before</div> <script src="your/fancy/script.js" /> </body> </html>