Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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'