Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

2.3K
Views
TypeError: exphbs no es una función

Estoy tratando de usar el módulo express-handlebars pero tengo un error. Mi código:

 var exphbs = require('express-handlebars'); app.engine('.hbs', exphbs({ extname: '.hbs', defaultLayout: "main"})); app.set('view engine', '.hbs');

Mi error:

 "app.engine('.hbs', exphbs({ extname: '.hbs', defaultLayout: "main"})); ^ TypeError: exphbs is not a function"

Parece que no puedo entender por qué no funciona correctamente. ¿Algunas ideas?

over 4 years ago · Santiago Trujillo
8 answers
Answer question

0

Tienes dos opciones para solucionar esto

1er método-

En este solo tienes que actualizar una sola palabra .enigne

Cambia esto:

 app.engine('.hbs', exphbs({ extname: '.hbs', defaultLayout: "main"}));

Para

 app.engine('.hbs', exphbs.engine({ extname: '.hbs', defaultLayout: "main"}));

2do método-

En esto hay que actualizar

 var exphbs = require('express-handlebars');

Para

 const { engine } = require('express-handlebars');

Y

 app.engine('.hbs', exphbs({ extname: '.hbs', defaultLayout: "main"}));

Para

 app.engine('handlebars', engine({ extname: '.hbs', defaultLayout: "main"}));

Buena suerte

over 4 years ago · Santiago Trujillo Report

0

así es, según la documentación de hbs , esta opción hará el trabajo.

 import express from 'express'; import { engine } from 'express-handlebars'; const app = express(); app.engine('.hbs', engine({extname: '.hbs'})); app.set('view engine', '.hbs'); app.set('views', './views');
over 4 years ago · Santiago Trujillo Report

0

Si desea usar express-handlebars con el módulo commonJS , debe importarlo así:

 const express = require('express'); const { engine } = require('express-handlebars'); const app = express(); app.engine('handlebars', engine({ extname: '.hbs', defaultLayout: "main"})); app.set('view engine', 'handlebars'); app.set("views", "./views"); app.get('/', (req, res) => { res.render('home'); }); app.listen(3000);

Si desea utilizar el módulo ES6 , puede seguir el archivo Léame oficial

over 4 years ago · Santiago Trujillo Report

0

const { engine } = require('express-handlebars');

y

 app.engine('handlebars', engine({ extname: '.hbs', defaultLayout: "main"}));
over 4 years ago · Santiago Trujillo Report

0

Puede usar exphbs liabrary en lugar de express-handlebars .

Registrando motor de vista:

 // view engine setup app.engine('hbs', require('exphbs')); app.set('view engine', 'hbs'); app.set('view options', { layout: 'main'});

De forma predeterminada, exphbs busca un nombre de carpeta llamado parciales para el directorio de parciales y un nombre de carpeta llamado diseños para el directorio de diseños. Tanto las carpetas de parciales como las de diseños se encuentran en el directorio de vistas .

aprende más

over 4 years ago · Santiago Trujillo Report

0

Debe usar "exphbs.engine" en lugar de "exphbs".

 app.engine('.hbs', exphbs.engine({ extname: '.hbs', defaultLayout: "main"}));
over 4 years ago · Santiago Trujillo Report

0

  1. var exphbs = require("express-handlebars");
  2. app.engine("manillar",exphbs({ defaultLayout: "main" }));

Reemplace con esto:

  1. const {motor} = require("express-handlebars");
  2. app.engine("manillar", motor({ defaultLayout: "main" }));
over 4 years ago · Santiago Trujillo Report

0

"app.engine('.hbs', exphbs({ extname: '.hbs', defaultLayout: "main"})); ^ TypeError: exphbs is not a function"

Este error se puede resolver agregando una engine() function a la constante exphbs , O simplemente llamando a la función engine() .

exphbs.engine() , debido a que exphbs es una constante y no una función, tenemos que llamar a la función engine() desde el paquete express-handlebars , ¡para que podamos usar el motor de plantillas handlebars!

guia de uso express-manillar


Puede obtener un segundo error si no está utilizando un archivo de diseño ( main.handlebars / main.hbs ).
Si alguien tiene problemas con el error de archivo main.handlebars / main.hbs .
Puede establecer el defaultLayout como null .

Algo como esto:

 const expressHbs = require('express-handlebars'); app.engine('handlebars', expressHbs.engine({ layoutsDir: 'views/layouts/', defaultLayout: null, extname: 'handlebars' }) ); app.set('view engine', 'handlebars'); app.set('views', 'views'); // optional

layoutsDir es la ubicación de sus diseños (si hay alguno, puede omitirse si no está utilizando un diseño).
extname (nombre de la extensión) depende de la elección del usuario.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!