I want to pass my variables into that template, let it render, and then get the resulting HTML as a string.
How can I do that in Express?
You don't need to use fs. This is built into EJS (not sure if it was at the time previous answer was posted).
It returns a Promise however so you could use Async/await to get the value:
let html
async function myFunc() {
html = await ejs.renderFile(filePath, data, options)
}
console.log(html)
Alternatively it provides a callback function:
ejs.renderFile(filePath, data, options, function(err, html) {
console.log(html)
})
Depending on the ejs version the following should work.
var ejs = require('ejs'),
fs = require('fs'),
file = fs.readFileSync(__dirname + '/template.ejs', 'ascii'),
rendered = ejs.render(file, { locals: { items:[1,2,3] } });
console.log(rendered);
You may need to install ejs if it isn't already installed.
cd;npm install ejs
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With