1

我刚刚在视图中设置了我的布局文件夹

app.engine('hbs', hbs({extname: 'hbs', defualtLayout : 'layout' , layoutDir: __dirname + '/views/layouts'}));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');

模块使用是

var hbs = require('hbs');

这给了我以下错误

app.engine('hbs', hbs({extname: 'hbs', defualtLayout : 'layout' , layoutDir: __dirname + '/views/layouts'}));
                  ^

TypeError: hbs is not a function
4

3 回答 3

2

这对我有用。

确保安装此软件包: npm install express-handlebars

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

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.engine('hbs', hbs.engine({
  extname: 'hbs',
  defaultLayout: 'layout',
  layoutsDir: __dirname + '/views/layout/',
  partialsDir: __dirname + '/views/partials'
}))

于 2021-12-30T16:41:10.997 回答
1

因为hbs模块导出的实际上并不是一个函数。

您应该阅读hbs 模块的描述文件,它已经告诉您如何使用它。

使用 hbs 作为默认视图引擎只需要在您的应用设置中添加一行代码。这将在调用 res.render 时渲染 .hbs 文件。

app.set('view engine', 'hbs');

要为您的模板文件使用不同的扩展名(即 html):

app.set('view engine', 'html');

app.engine('html', require('hbs').__express);

另一种方法是使用express-handlebars模块,它可以在你的路上使用。

app.engine('handlebars', exphbs({defaultLayout: 'main'}));

app.set('view engine', 'handlebars');
于 2017-08-19T09:00:13.737 回答
0

当我将模块更改为

var hbs = require('express-handlebars');
于 2017-08-19T08:49:17.837 回答