For some reason I can't pass a variable to the pug template with Node JS.
app.get("/", function (req, res) { res.render('index', { hello : 'Hey'} ) })
....
extends layout.pug block content h1 #{hello} guy
This just returns "guy" in the index.html file
Jade is a template engine for node. js and the default rendering engine for the Express web framework. It is a new, simplified language that compiles into HTML and is extremely useful for web developers. Jade is designed primarily for server-side templating in node.
I think you are using JADE coding (#{hello}) with "pug"(updated jade) plugin with static .html -- completely wrong.
Follow the lines below:
app.set('views', __dirname + '/public/views'); app.set('view engine', 'pug');
app.get('/', function (req, res) { res.render('index', { title: 'Hey', message: 'Hello there!'}); });
html head title= title body h1= message
Try this.. works for me.
nodejs part / index.js
const router = require('express').Router(); router.get('/', (req, res, next) => { const testObj = {hello: 'Hey'}; res.render('index', { testObj: JSON.stringify(testObj) }); });
pug/jade part / (index.pug)
script. var testObj = !{testObj};
i'm using pug version: 2.0.3
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