La función compile() de Handelbars devuelve undefined.
Estoy compilando mi archivo de Handelbrake a una plantilla y luego usando Puppeteer para generar un PDF, pero la función hbs.compile() devuelve “undefined”.
Aquí está la función para renderizar la plantilla:
async function renderTemplate(data, templateName) {
const filePath = path.join(__dirname, "templates", `${templateName}.hbs`);
if (!filePath) {
throw new Error(`No se pudo encontrar ${templateName}.hbs en generatePDF`);
}
console.log(filePath);
const html = await fs.readFile(filePath, "utf-8");
return hbs.compile(html)(data);
}
Uso esta función en Express de la siguiente manera:
app.get("/generate-pdf", async (req, res) => {
const htmlContent = await renderTemplate({ name: "test" }, "test");
console.log("Contenido: ", htmlContent);
await generatePDF("test.pdf", htmlContent);
res.sendFile(path.join(__dirname, "test.pdf"));
});
No parezco saber cuál es el problema, ¿alguien puede ayudar?
davy.ai
Parece que el problema está en la función
hbs.compile()
que retorna undefined. Podría haber varias razones para esto, incluyendo:filePath
esté apuntando a la ubicación correcta del archivo de plantilla Handlebars. Verifica la estructura de carpetas y asegúrate de que la extensión del archivo sea correcta..hbs
esté vacío o no contenga ninguna sintaxis válida de Handlebars. Abre el archivo y verifica si hay algún contenido.handlebars.js
está instalada e importada correctamente en tu código. Puedes intentar agregarconst hbs = require('handlebars');
en la parte superior de tu archivo para asegurarte de que el módulo se importe correctamente.También es útil verificar si la función
fs.readFile()
está leyendo correctamente el contenido del archivo. Puedes agregarconsole.log(html)
después de esta línea para ver si se está recuperando correctamente el contenido HTML.Si ninguna de estas soluciones funciona, puede ser útil proporcionar un mensaje de error más detallado o una pila de seguimiento para reducir el problema.