I sadly try for days to pass some parameters throught one page, I cant find a solution to solve my problem.
I also tried toadd res.locals = { users: results } , changing .ejs variable name then render, same result ; I tried with a string : res.render('./Utilisateurs/utilisateurs', { test: "test" } same result ...;
This page always send this error :
ReferenceError: F:\DEV\devNodeJs\skote\Admin\views\Utilisateurs\utilisateurs.ejs:16
14| <div class="page-title-box d-sm-flex align-items-center justify-content-between">
15| <h4 class="mb-sm-0 font-size-18">
>> 16| <%= test %>Data Tables</h4>
17|
18| <div class="page-title-right">
19| <ol class="breadcrumb m-0">
test is not defined
at eval ("F:\\DEV\\devNodeJs\\skote\\Admin\\views\\Utilisateurs\\utilisateurs.ejs":16:26)
at utilisateurs (F:\DEV\devNodeJs\skote\Admin\node_modules\ejs\lib\ejs.js:692:17)
at tryHandleCache (F:\DEV\devNodeJs\skote\Admin\node_modules\ejs\lib\ejs.js:272:36)
at View.exports.renderFile [as engine] (F:\DEV\devNodeJs\skote\Admin\node_modules\ejs\lib\ejs.js:489:10)
at View.render (F:\DEV\devNodeJs\skote\Admin\node_modules\express\lib\view.js:135:8)
at tryRender (F:\DEV\devNodeJs\skote\Admin\node_modules\express\lib\application.js:640:10)
at Function.render (F:\DEV\devNodeJs\skote\Admin\node_modules\express\lib\application.js:592:3)
at ServerResponse.render (F:\DEV\devNodeJs\skote\Admin\node_modules\express\lib\response.js:1012:7)
at ServerResponse.res.render (F:\DEV\devNodeJs\skote\Admin\node_modules\express-ejs-layouts\lib\express-layouts.js:77:18)
at F:\DEV\devNodeJs\skote\Admin\routers\route.js:22:13
Here I have my controller function :
app.get('/utilisateurs', urlencodeParser, function(req, res, next) {
con.connect(function(err) {
console.log("Utilisateurs");
var result = new Array();
con.query("Select * from users", function(err, _users) {
_users.forEach(function(user) {
var u = new Object();
u["username"] = user["username"];
u["password"] = user["password"];
u["email"] = user["email"];
result.push(u);
});
res.locals = { users: JSON.stringify(result) };
// if any error while executing above query, throw error
res.render('./Utilisateurs/utilisateurs', { results: result }, function(err) {
console.log(err);
});
next();
});
});
});
Here my .ejs file :
<div class="row">
<div class="col-12">
<div class="page-title-box d-sm-flex align-items-center justify-content-between">
<h4 class="mb-sm-0 font-size-18">
{{ test}}Data Tables</h4>
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="javascript: void(0);">Tables</a></li>
<li class="breadcrumb-item active">Data Tables</li>
</ol>
</div>
</div>
</div>
</div>
Here my main (index.js) :
var app = require('express')();
var express = require('express');
var path = require('path');
var http = require('http').Server(app);
var toastr = require('express-toastr');
// import controller
var AuthController = require('./controllers/AuthController');
var UserControler = require('./controllers/UtilisateurController');
// import Router file
var pageRouter = require('./routers/route');
var session = require('express-session');
var bodyParser = require('body-parser');
var flash = require('connect-flash');
var i18n = require("i18n-express");
app.use(bodyParser.json());
var urlencodeParser = bodyParser.urlencoded({ extended: true });
app.use(session({
key: 'user_sid',
secret: 'somerandonstuffs',
resave: false,
saveUninitialized: false,
cookie: {
expires: 1200000
}
}));
app.use(session({ resave: false, saveUninitialized: true, secret: 'nodedemo' }));
app.use(flash());
app.use(toastr());
app.use(i18n({
translationsPath: path.join(__dirname, 'i18n'), // <--- use here. Specify translations files path.
siteLangs: ["es", "en", "de", "ru", "it"],
textsVarName: 'translation'
}));
app.use('/public', express.static('public'));
app.get('/layouts/', function(req, res) {
res.render('view');
});
// apply controller
AuthController(app);
UserControler(app);
//For set layouts of html view
var expressLayouts = require('express-ejs-layouts');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(expressLayouts);
// Define All Route
pageRouter(app);
app.all('*', function(req, res) {
res.locals = { title: 'Error 404' };
res.render('pages/pages-404', { layout: false });
});
http.listen(8000, function() {
console.log('listening on *:8000');
});