Reputation: 11
"I’m using express-handlebars
for templating in my Express.js app. I have set up the layout
folder, not layouts
, and specified its location correctly in the configuration. However, despite my configuration, Express is expecting the folder to be named layouts
(plural) and fails to find the layout file when it is named layout
(singular).
I have configured the engine as follows:
var exphbs = require('express-handlebars');
app.engine('hbs', exphbs.engine({
extname: 'hbs',
defaultLayout: 'layout',
layoutDir: __dirname + '/views/layout/', // Location of layout files
partialsDir: __dirname + '/views/partials/' // Location of partials
}));
app.set('view engine', 'hbs');
Despite this, I receive the following error when trying to render a page:
Error: ENOENT: no such file or directory, open 'C:\path\to\your\project\views\layouts\layout.hbs'
I have a folder named layout
, but Express seems to be looking for layouts
instead. When I rename my folder to layouts
, the app works as expected, but I want to understand why this behavior occurs and why the configuration doesn't work with the folder named layout
."
"I configured express-handlebars with the layout
folder. My expectation was that Express would correctly find the layout file located in views/layout/
when rendering pages. I tried the following:
layout
inside views/
.app.js
to use this folder for layouts and partials.layout.hbs
from the layout
folder.
However, Express is looking for a layouts
folder instead and is throwing an error stating it cannot find the file. The issue only resolves when I rename the folder to layouts
, but this is not ideal because I want to use layout
(singular)."Upvotes: 1
Views: 30