ericf / express-handlebars

A Handlebars view engine for Express which doesn't suck.
BSD 3-Clause "New" or "Revised" License
2.32k stars 382 forks source link

`res.render()` from webpack-dev-server middleware filesystem #239

Closed vikikamath closed 5 years ago

vikikamath commented 5 years ago

I am trying to load a hbs template from webpackDevMiddleware file system but apparently res.render() can lookup only the disk

const webpack = require('webpack')
const config = require('./webpack.config')
const compiler = webpack(config)
const webpackDevMiddleware = require('webpack-dev-middleware')

const app = express()

const devMiddleware = webpackDevMiddleware(compiler, {
    publicPath: config.output.publicPath,
    historyApiFallback: true,
})

app.get('/:page', (req, res) => {
  const templateFilePath = `${req.params.page}`,

  // look up templateFilePath on **devMiddleware.fileSystem**
  const templateFileAsString = devMiddleware.fileSystem.readFileSync(templateFilePath).toString())

  res.render(??, {title: 'watever'}) // <=== How do I render this ?
})

app.listen(PORT, () => console.log('running'))
vikikamath commented 5 years ago

Following worked for me:

const template = Handlebars.compile(templateFileAsString);
res.send(template({title: 'watever' })