Meus códigos nos arquivos estão exatamente iguais aos escritos nos vídeos, meu arquivo produtos.js está assim:
module.exports = function(app) { app.get("/produtos",function(req, res) {
var connection = app.infra.connectionFactory(); var produtosBanco = new app.infra.produtosBanco(connection);
produtosBanco.lista(function(err, results){ res.render('produtos/lista', {lista: results}); });
connection.end();
}); }
meu arquivo produtosBanco.js está assim:
module.exports = function(){ return function(connection){ this.lista = function(callback){ connection.query('select * from livros',callback); } return this; }; }
e estou obtendo o seguinte erro:
TypeError: /Users/arthurdeaquino/Dropbox/casa_do_codigo_alura/app/views/produtos/lista.ejs:16 14| 15|
19| <%= lista[i].id %>16| <% for(var i = 0; i < lista.length; i++) { %> 17| 18|
Cannot read property 'length' of undefined at eval (eval at (/Users/arthurdeaquino/Dropbox/casa_do_codigo_alura/node_modules/ejs/lib/ejs.js:460:12), :11:32) at returnedFn (/Users/arthurdeaquino/Dropbox/casa_do_codigo_alura/node_modules/ejs/lib/ejs.js:489:17) at View.exports.renderFile [as engine] (/Users/arthurdeaquino/Dropbox/casa_do_codigo_alura/node_modules/ejs/lib/ejs.js:350:31) at View.render (/Users/arthurdeaquino/Dropbox/casa_do_codigo_alura/node_modules/express/lib/view.js:126:8) at tryRender (/Users/arthurdeaquino/Dropbox/casa_do_codigo_alura/node_modules/express/lib/application.js:639:10) at EventEmitter.render (/Users/arthurdeaquino/Dropbox/casa_do_codigo_alura/node_modules/express/lib/application.js:591:3) at ServerResponse.render (/Users/arthurdeaquino/Dropbox/casa_do_codigo_alura/node_modules/express/lib/response.js:961:7) at Query._callback (/Users/arthurdeaquino/Dropbox/casa_do_codigo_alura/app/routes/produtos.js:8:17) at Query.Sequence.end (/Users/arthurdeaquino/Dropbox/casa_do_codigo_alura/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24) at /Users/arthurdeaquino/Dropbox/casa_do_codigo_alura/node_modules/mysql/lib/protocol/Protocol.js:393:18
eu não estou entendendo porque meu código está exatamente igual ao dos vídeos. Revisei inúmeras vezes não tem uma diferença.