Я пытаюсь использовать express-handlebars
и использовать partials
, но я получаю следующее сообщение об ошибкеобертоны не оказывается экспресс-рули узел
The partial header could not be found.
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);
Все это работает, а экспресс-приложение работает на 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');
TypeError: exphbs.registerPartials не является функцией –
Это 'registerPartial' без 'с' http://handlebarsjs.com/partials.html – CreasolDev
@CreasolDev, но я использую 'express-handlebars' –