hbs icon indicating copy to clipboard operation
hbs copied to clipboard

Using a property called "settings" in the data passed to a view/template breaks the lib

Open tomsotte opened this issue 7 years ago • 1 comments

Using a property called "settings" in the data passed to a view/template breaks the app. As far as I've investigated the settings property is used by hbs.js in the middleware function. If the data passed to the render function of view.js contains alreayd a property settings is doesn't get used correctly, and some information is missing, particularly the view directories (view_dirs in hbs.js).

I'm using hbs as a template engine for expressjs. It all starts as a call for res.render():

...
res.render('settings', { settings: {...} });
...

The error calls stack in detail:

TypeError: Path must be a string. Received undefined
    at assertPath (path.js:28:11)
    at Object.join (path.js:1236:7)
    at /app/node_modules/hbs/lib/hbs.js:117:26
    at Array.map (<anonymous>)
    at Instance.middleware (/app/node_modules/hbs/lib/hbs.js:115:46)
    at View.render (/app/node_modules/express/lib/view.js:135:8)
    at tryRender (/app/node_modules/express/lib/application.js:641:10)
    at Function.render (/app/node_modules/express/lib/application.js:593:3)
    at ServerResponse.render (/app/node_modules/express/lib/response.js:1008:7)
    at exports.get (/app/routes/controllers/settings.js:30:6)

tomsotte avatar May 19 '18 18:05 tomsotte

@mfdebian can you have a look into this one? Maybe is something that we want to include for next minor releases 🤔

UlisesGascon avatar Jun 16 '25 17:06 UlisesGascon