ReferenceError: 'pictures' is not defined. Using Node JS
ReferenceError: 'pictures' is not defined. Using Node JS
找遍了也没有找到运行。我是新来的,所以我也很难搜索或修复正确的东西。试图从数据库中获取数据,但图片变量未定义它说,我之前得到它 运行,也许只是类似这样的类型错误,但我已经尝试了很多东西,我 运行 没有时间完成我的学校项目。这是我的代码:
index.ejs:
<main>
<div class="jumbotron">
<h1>Formula 1, see it, feel it!</h1></br>
<p>Welkom! Op deze site vind u de meest mooie foto's van de Formule 1.</p>
</div>
</main>
<div class="jumbotron">
<% if(pictures.length){ %>
<table>
<tr>
<th>Titel</th>
<th>Locatie</th>
<th>Datum</th>
<th>Naam</th>
<th>Waardering</th>
</tr>
<% } %>
<% for (var i = 0; i < pictures.length; i++) { %>
<tr>
<td><%= pictures[i].titel %></td>
<td><%= pictures[i].locatie %></td>
<td><%= pictures[i].datum %></td>
<td><%= pictures[i].naam %></td>
<td><%= pictures[i].waardering %></td>
<% } %>
</tr>
</table>
</div>
<footer>
<% include ../partials/footer %>
</footer>
index.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
req.getConnection(function(err, connection) {
connection.query('SELECT * FROM pictures', function(err, results) {
res.locals.pictures = results;
console.log(results);
res.render('../views/pages/index');
});
});
});
module.exports = router;
app.js:
var express = require('express'),
path = require('path'),
favicon = require('serve-favicon'),
logger = require('morgan'),
cookieParser = require('cookie-parser'),
flash = require('connect-flash'),
expressValidator = require('express-validator'),
session = require('express-session'),
passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
bodyParser = require('body-parser'),
multer = require('multer'),
mongo = require('mongodb'),
mongoose = require('mongoose'),
mysql = require('mysql'),
myConnection = require('express-myconnection');
var db = mongoose.connection;
var dbOptions = {
host: 'localhost',
user: 'fcdeen_user',
password: 'wEvGT9ctm8KUxdTD',
database: 'fcdeen'
};
var indexRoutes = require('./routes/index'),
loginRoutes = require('./routes/login'),
uploadRoutes = require('./routes/upload');
var app = express();
//Use session
app.use(session({
secret: "Its_A_veRy_DarK_SecreT",
resave: false,
saveUninitialized: true
}));
// Voeg de bodyparser middleware aan de app toe (POST requests)
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
// set the view engine to ejs
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// Voeg connectie middleware toe aan app
app.use(myConnection(mysql, dbOptions, 'single'));
// index page
app.get('/home', function(req, res) {
res.render('pages/index');
});
// index page
app.get('/index', function(req, res) {
res.render('pages/index');
});
// upload page
app.get('/upload', function(req, res) {
res.render('pages/upload');
});
// login page
app.get('/login', function(req, res) {
res.render('pages/login');
});
app.listen(8080);
console.log('Launch at port 8080');
这是错误:
ReferenceError: C:\School\SSS 2015\testen\node-ejs-master\views\pages\index.ejs:21
19| <div class="jumbotron">
20|
>> 21| <% if(pictures.length){ %>
22| <table>
23| <tr>
24| <th>Titel</th>
pictures is not defined
at eval (eval at <anonymous> (C:\School\SSS 2015\testen\node-ejs-master\node_modules\ejs\lib\ejs.js:242:14), <anonymous>:33:292)
at eval (eval at <anonymous> (C:\School\SSS 2015\testen\node-ejs-master\node_modules\ejs\lib\ejs.js:242:14), <anonymous>:35:68)
at C:\School\SSS 2015\testen\node-ejs-master\node_modules\ejs\lib\ejs.js:255:15
at Object.exports.render (C:\School\SSS 2015\testen\node-ejs-master\node_modules\ejs\lib\ejs.js:293:13)
at View.exports.renderFile [as engine] (C:\School\SSS 2015\testen\node-ejs-master\node_modules\ejs\lib\ejs.js:323:20)
at View.render (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\view.js:126:8)
at tryRender (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\application.js:639:10)
at EventEmitter.render (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\application.js:591:3)
at ServerResponse.render (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\response.js:961:7)
at C:\School\SSS 2015\testen\node-ejs-master\app.js:61:6
at Layer.handle [as handle_request] (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\layer.js:95:5)
at next (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\route.js:131:13)
at Route.dispatch (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\layer.js:95:5)
at C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:277:22
at Function.process_params (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:330:12)
at next (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:271:10)
at C:\School\SSS 2015\testen\node-ejs-master\node_modules\express-myconnection\lib\express-myconnection.js:123:9
at Layer.handle [as handle_request] (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:312:13)
at C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:280:7
at Function.process_params (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:330:12)
感谢您的帮助!
你应该将图片传递给渲染函数
return res.render('../views/pages/index', {pictures : results} );
我认为这是您问题的解决方案
// Don't separate the routes. If you are setting your routes in this file, try keep every route at the same file.
app.get('/', function(req, res) {
req.getConnection(function(err, connection) {
connection.query('SELECT * FROM pictures', function(err, results) {
res.locals.pictures = results;
console.log(results);
res.render('pages/index', {pictures : results});
});
});
});
// index page
app.get('/home', function(req, res) {
res.render('pages/index');
});
// index page
app.get('/index', function(req, res) {
res.render('pages/index');
});
当您输入 /home
或 /index
时,您必须看到错误,但输入 /
应该没有问题。
如果您尝试让这三个路由执行相同的操作,您可以试试这个:
app.get('/', renderPageIndex)
// index page
app.get('/home', renderPageIndex)
// index page
app.get('/index', renderPageIndex )
function renderPageIndexfunction(req, res) {
req.getConnection(function(err, connection) {
connection.query('SELECT * FROM pictures', function(err, results) {
res.locals.pictures = results;
console.log(results);
res.render('pages/index', {pictures : results});
});
});
});
找遍了也没有找到运行。我是新来的,所以我也很难搜索或修复正确的东西。试图从数据库中获取数据,但图片变量未定义它说,我之前得到它 运行,也许只是类似这样的类型错误,但我已经尝试了很多东西,我 运行 没有时间完成我的学校项目。这是我的代码:
index.ejs:
<main>
<div class="jumbotron">
<h1>Formula 1, see it, feel it!</h1></br>
<p>Welkom! Op deze site vind u de meest mooie foto's van de Formule 1.</p>
</div>
</main>
<div class="jumbotron">
<% if(pictures.length){ %>
<table>
<tr>
<th>Titel</th>
<th>Locatie</th>
<th>Datum</th>
<th>Naam</th>
<th>Waardering</th>
</tr>
<% } %>
<% for (var i = 0; i < pictures.length; i++) { %>
<tr>
<td><%= pictures[i].titel %></td>
<td><%= pictures[i].locatie %></td>
<td><%= pictures[i].datum %></td>
<td><%= pictures[i].naam %></td>
<td><%= pictures[i].waardering %></td>
<% } %>
</tr>
</table>
</div>
<footer>
<% include ../partials/footer %>
</footer>
index.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
req.getConnection(function(err, connection) {
connection.query('SELECT * FROM pictures', function(err, results) {
res.locals.pictures = results;
console.log(results);
res.render('../views/pages/index');
});
});
});
module.exports = router;
app.js:
var express = require('express'),
path = require('path'),
favicon = require('serve-favicon'),
logger = require('morgan'),
cookieParser = require('cookie-parser'),
flash = require('connect-flash'),
expressValidator = require('express-validator'),
session = require('express-session'),
passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
bodyParser = require('body-parser'),
multer = require('multer'),
mongo = require('mongodb'),
mongoose = require('mongoose'),
mysql = require('mysql'),
myConnection = require('express-myconnection');
var db = mongoose.connection;
var dbOptions = {
host: 'localhost',
user: 'fcdeen_user',
password: 'wEvGT9ctm8KUxdTD',
database: 'fcdeen'
};
var indexRoutes = require('./routes/index'),
loginRoutes = require('./routes/login'),
uploadRoutes = require('./routes/upload');
var app = express();
//Use session
app.use(session({
secret: "Its_A_veRy_DarK_SecreT",
resave: false,
saveUninitialized: true
}));
// Voeg de bodyparser middleware aan de app toe (POST requests)
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
// set the view engine to ejs
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// Voeg connectie middleware toe aan app
app.use(myConnection(mysql, dbOptions, 'single'));
// index page
app.get('/home', function(req, res) {
res.render('pages/index');
});
// index page
app.get('/index', function(req, res) {
res.render('pages/index');
});
// upload page
app.get('/upload', function(req, res) {
res.render('pages/upload');
});
// login page
app.get('/login', function(req, res) {
res.render('pages/login');
});
app.listen(8080);
console.log('Launch at port 8080');
这是错误:
ReferenceError: C:\School\SSS 2015\testen\node-ejs-master\views\pages\index.ejs:21
19| <div class="jumbotron">
20|
>> 21| <% if(pictures.length){ %>
22| <table>
23| <tr>
24| <th>Titel</th>
pictures is not defined
at eval (eval at <anonymous> (C:\School\SSS 2015\testen\node-ejs-master\node_modules\ejs\lib\ejs.js:242:14), <anonymous>:33:292)
at eval (eval at <anonymous> (C:\School\SSS 2015\testen\node-ejs-master\node_modules\ejs\lib\ejs.js:242:14), <anonymous>:35:68)
at C:\School\SSS 2015\testen\node-ejs-master\node_modules\ejs\lib\ejs.js:255:15
at Object.exports.render (C:\School\SSS 2015\testen\node-ejs-master\node_modules\ejs\lib\ejs.js:293:13)
at View.exports.renderFile [as engine] (C:\School\SSS 2015\testen\node-ejs-master\node_modules\ejs\lib\ejs.js:323:20)
at View.render (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\view.js:126:8)
at tryRender (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\application.js:639:10)
at EventEmitter.render (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\application.js:591:3)
at ServerResponse.render (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\response.js:961:7)
at C:\School\SSS 2015\testen\node-ejs-master\app.js:61:6
at Layer.handle [as handle_request] (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\layer.js:95:5)
at next (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\route.js:131:13)
at Route.dispatch (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\layer.js:95:5)
at C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:277:22
at Function.process_params (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:330:12)
at next (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:271:10)
at C:\School\SSS 2015\testen\node-ejs-master\node_modules\express-myconnection\lib\express-myconnection.js:123:9
at Layer.handle [as handle_request] (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:312:13)
at C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:280:7
at Function.process_params (C:\School\SSS 2015\testen\node-ejs-master\node_modules\express\lib\router\index.js:330:12)
感谢您的帮助!
你应该将图片传递给渲染函数
return res.render('../views/pages/index', {pictures : results} );
我认为这是您问题的解决方案
// Don't separate the routes. If you are setting your routes in this file, try keep every route at the same file.
app.get('/', function(req, res) {
req.getConnection(function(err, connection) {
connection.query('SELECT * FROM pictures', function(err, results) {
res.locals.pictures = results;
console.log(results);
res.render('pages/index', {pictures : results});
});
});
});
// index page
app.get('/home', function(req, res) {
res.render('pages/index');
});
// index page
app.get('/index', function(req, res) {
res.render('pages/index');
});
当您输入 /home
或 /index
时,您必须看到错误,但输入 /
应该没有问题。
如果您尝试让这三个路由执行相同的操作,您可以试试这个:
app.get('/', renderPageIndex)
// index page
app.get('/home', renderPageIndex)
// index page
app.get('/index', renderPageIndex )
function renderPageIndexfunction(req, res) {
req.getConnection(function(err, connection) {
connection.query('SELECT * FROM pictures', function(err, results) {
res.locals.pictures = results;
console.log(results);
res.render('pages/index', {pictures : results});
});
});
});