如何用express-handlebars创建模板?exphbs函数不存在问题求助
解决express-handlebars中exphbs函数不存在的问题
问题出在express-handlebars v4及以上版本的导出方式变更——不再默认导出可直接调用的函数,而是需要通过create()方法初始化引擎。
解决方案:修改代码中的引擎配置
方法1:解构获取create函数
const { create } = require('express-handlebars'); const app = express(); // 初始化handlebars引擎 const hbs = create({ /* 可选配置项,比如默认布局、后缀名等 */ }); app.engine('handlebars', hbs.engine); app.set('view engine', 'handlebars');
方法2:直接调用默认导出的create方法
const exphbs = require('express-handlebars'); const app = express(); // 改用create()初始化引擎 app.engine('handlebars', exphbs.create().engine); app.set('view engine', 'handlebars');
额外检查项
- 确保项目根目录下存在
views文件夹,且里面有layouts子文件夹,layouts中包含默认布局文件main.handlebars(内容至少要有{{{body}}}来渲染页面主体)。 - 若不需要默认布局,可在create时配置
defaultLayout: false:
const hbs = create({ defaultLayout: false });
内容的提问来源于stack exchange,提问作者Felipe Petraglia
相关产品推荐
相关产品推荐

