Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

TypeError

Fala pessoal, configurei o banco de dados seguindo os passos na Aula 2 - Atividade 8 no MacOS e estou recebendo o erro abaixo ao acessar http://localhost:3000/produtos

TypeError: /Users/raphael/Documents/Curso Node.js Inovando com Javascript no backend/casadocodigo/app/views/produtos/lista.ejs:10
    8|                 <td>preco</td>
    9|             </tr>
 >> 10|             <%for(var i=0;i<lista.length;i++) {%>
    11|                 <tr>
    12|                     <td><%=lista[i].id%></td>         <!-- '%=' imprime valor -->
    13|                     <td><%=lista[i].titulo%></td>

Cannot read property 'length' of undefined
    at eval (eval at compile (/Users/raphael/Documents/Curso Node.js Inovando com Javascript no backend/casadocodigo/node_modules/ejs/lib/ejs.js:618:12), <anonymous>:11:27)
    at returnedFn (/Users/raphael/Documents/Curso Node.js Inovando com Javascript no backend/casadocodigo/node_modules/ejs/lib/ejs.js:653:17)
    at tryHandleCache (/Users/raphael/Documents/Curso Node.js Inovando com Javascript no backend/casadocodigo/node_modules/ejs/lib/ejs.js:251:36)
    at View.exports.renderFile [as engine] (/Users/raphael/Documents/Curso Node.js Inovando com Javascript no backend/casadocodigo/node_modules/ejs/lib/ejs.js:482:10)
    at View.render (/Users/raphael/Documents/Curso Node.js Inovando com Javascript no backend/casadocodigo/node_modules/express/lib/view.js:135:8)
    at tryRender (/Users/raphael/Documents/Curso Node.js Inovando com Javascript no backend/casadocodigo/node_modules/express/lib/application.js:640:10)
    at Function.render (/Users/raphael/Documents/Curso Node.js Inovando com Javascript no backend/casadocodigo/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/Users/raphael/Documents/Curso Node.js Inovando com Javascript no backend/casadocodigo/node_modules/express/lib/response.js:1008:7)
    at Query.<anonymous> (/Users/raphael/Documents/Curso Node.js Inovando com Javascript no backend/casadocodigo/app/routes/produtos.js:8:15)
    at Query.<anonymous> (/Users/raphael/Documents/Curso Node.js Inovando com Javascript no backend/casadocodigo/node_modules/mysql/lib/Connection.js:502:10)
2 respostas

O problema deve estar ocorrendo porque a consulta ao banco de dados não está retornando resultados. Como os resultados ficam gravados na variável "lista", se ela estiver vazia vai ocorrer este erro ao tentar fazer um loop no seu conteúdo.

Veja este post, ele tem uma sugestão de como identificar o problema

https://cursos.alura.com.br/forum/topico-comecou-a-dar-problema-no-length-do-lista-ejs-depois-da-atividade-16-isolando-o-acesso-a-dados-66239
solução!

Consegui usando o comando no terminal:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'