Handles Bars hbs 不是函数
Handles Bars hbs is not a function
我刚刚将视图中的布局文件夹设置为
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
当我将模块更改为
时它正在工作
var hbs = require('express-handlebars');
因为hbs
模块导出的实际上不是函数。
您应该阅读 description file of the hbs module,它告诉您如何使用它。
Using hbs as the default view engine requires just one line of code in
your app setup. This will render .hbs files when res.render is called.
app.set('view engine', 'hbs');
To use a different extension (i.e. html) for your template files:
app.set('view engine', 'html');
app.engine('html', require('hbs').__express);
另一种方法是使用express-handlebars
模块,它可以用在你的路上。
app.engine('handlebars', exphbs({defaultLayout: 'main'}));
app.set('view engine', 'handlebars');
这对我有用。
确保安装这个包:
npm 安装 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'
}))
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/',partialDir:__dirname+'/views/partials/'}))
将hbs
更改为hbs.engine
使用 hbs.engine()
如下所示
app.engine('hbs', hbs.engine({
extname: 'hbs',
defaultLayout: 'layout',
layoutDir: __dirname + '/views/layouts'
}));
我刚刚将视图中的布局文件夹设置为
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
当我将模块更改为
时它正在工作var hbs = require('express-handlebars');
因为hbs
模块导出的实际上不是函数。
您应该阅读 description file of the hbs module,它告诉您如何使用它。
Using hbs as the default view engine requires just one line of code in your app setup. This will render .hbs files when res.render is called.
app.set('view engine', 'hbs');
To use a different extension (i.e. html) for your template files:
app.set('view engine', 'html'); app.engine('html', require('hbs').__express);
另一种方法是使用express-handlebars
模块,它可以用在你的路上。
app.engine('handlebars', exphbs({defaultLayout: 'main'})); app.set('view engine', 'handlebars');
这对我有用。
确保安装这个包: npm 安装 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'
}))
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/',partialDir:__dirname+'/views/partials/'}))
将hbs
更改为hbs.engine
使用 hbs.engine()
如下所示
app.engine('hbs', hbs.engine({
extname: 'hbs',
defaultLayout: 'layout',
layoutDir: __dirname + '/views/layouts'
}));