我正在尝试使用express-handlebars
并使用partials
,但我收到以下错误消息
找不到部分标题。
我的app.js
代码如下所示。
var express = require('express');
var exphbs = require('express-handlebars');
var app = express();
app.engine('handlebars', exphbs({defaultLayout: 'main'}));
app.set('view engine', 'hbs');
app.get('/', function (req, res) {
res.render('home');
});
app.listen(3000);
这一切正常,Express应用程序在localhost:3000上运行。
我的文件夹结构如下:
|_app.js
|_views_
|_home.hbs
|_layouts_
|_main.hbs
|_partials_
|_header.hbs
main.hbs
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example App</title>
</head>
<body>
{{{body}}}
</body>
</html>
header.hbs
<nav>
<a href="/">Home</a>
<a href="/contact">Contact</a>
</nav>
home.hbs
{{> header}}
<h1>Hey world!</h1>
一切都按预期工作,直到我尝试将header.hbs
作为部分引入。
任何人都可以看到我的代码有任何问题吗?
经过进一步调查后,我也尝试了这一点,但没有取得任何成功:
// Create `ExpressHandlebars` instance with a default layout.
var hbs = exphbs.create({
// Uses multiple partials dirs, templates in "shared/templates/" are shared
// with the client-side of the app (see below).
partialsDir: [
'views/partials/'
]
});
// Register `hbs` as our view engine using its bound `engine()` function.
app.engine('hbs', hbs.engine);
app.set('view engine', 'hbs');
答案 0 :(得分:1)
有必要为express-handlebars
部分定义以下设置。
var handlebars = require('express-handlebars');
app.engine('hbs', handlebars({ extname: '.hbs' }));
app.set('view engine', 'hbs');
以下是完整的代码:
var handlebars = require('express-handlebars');
app.engine('hbs', handlebars({ extname: '.hbs' }));
app.set('view engine', 'hbs');
app.get('/', function (request, response) {
response.render('home');
});
答案 1 :(得分:0)
我相信你错过了下一行:
exphbs.registerPartials(__dirname + '/views/partials');