Node.js中Handlebars运行报错hbs is not a function的原因是什么?
报错原因
- 依赖包引入错误:你当前引入的
handlebars是原生模板编译库,导出的是模板编译相关的对象,不是可直接调用的Express模板引擎配置函数,Express生态下要使用封装好的express-handlebars包才能完成引擎注册。 - 配置参数存在拼写错误:你代码里的
extanme属于拼写错误,正确参数名是extname。
解决方案
步骤1:安装正确的依赖包
执行安装命令:
npm install express-handlebars
步骤2:修改引入和配置代码
对应express-handlebars v6.x 及以上版本
// 引入依赖,从express-handlebars中解构出engine方法 const { engine } = require('express-handlebars'); // 注册模板引擎,修正拼写错误的参数 app.engine('hbs', engine({ extname: '.hbs', defaultLayout: 'layout', layoutsDir: __dirname + '/views/layout/', partialsDir: __dirname + '/views/partials/' })); // 配置默认渲染引擎 app.set('view engine', 'hbs');
对应express-handlebars v5.x 及以下版本
// 引入依赖,老版本直接导出可调用的配置函数 const hbs = require('express-handlebars'); // 注册模板引擎 app.engine('hbs', hbs({ extname: '.hbs', defaultLayout: 'layout', layoutsDir: __dirname + '/views/layout/', partialsDir: __dirname + '/views/partials/' })); app.set('view engine', 'hbs');
内容的提问来源于stack exchange,提问作者mohd irfad
相关产品推荐
相关产品推荐

