I want to use a variable which is declared in javascript file to a ejs file.
javascript:
var express = require('express');
var app = express();
var myVar = 1;
In the ejs file , where I want to use that variable inside a few if statements ,I have to declare it again in order to be able to use it.
ejs file:
var myVar = 1;
if ( my Var ) ....
How can I avoid this?Or is there a way for creating a configuration file which is accesible from both javascript and ejs?
I tried also to use:
app.locals.myVar = 1
but it is undefined in the ejs file.
------- UPDATE --------------------------
In my code I am using:
app.get('/', function (req, res) {
res.render('index', { user : req.user, message: [] });
});
after using the app.locals:
app.get('/', function (req, res) {
res.render('index', { user : req.user, message: [] });
res.render('user_info.ejs');
});
and even though the code runs fine , I am receiving:
ReferenceError: ....user_info.ejs:18
>> 18| height:60px;
user is not defined
at eval (eval at <anonymous> (...node_modules/ejs/lib/ejs.js:464:12), <anonymous>:20:12)
at returnedFn (...node_modules/ejs/lib/ejs.js:493:17)
at View.exports.renderFile [as engine] (.../node_modules/ejs/lib/ejs.js:350:31)
.....
which doesn't make sence ,since as I said the code runs fine.And If I run it without the addition of the second res.render('user_info.ejs)
I receive no errors.
So, can I have two res.render statements?
app.locals.myVar
should work, provided that you set it in the correct place and use it correctly in your template. You should probably post more code. – Rasevar express = require('express');var app = express();
also in the ejs file and if yes,if it will use the value from javascript file. – Alonzoaloofwindow
object from the server side? That's not how EJS templating works. – Collins