Olá pessoal, tudo bem?
Ao fazer o curso "JS na Web: CRUD com JS assíncrono" passei a receber também um typeError dizendo que o forEach não seria uma função para "data". Percebi que alguns colegas tiveram o mesmo problema e passei a tentar identificar qual seria a solução. Primeiro investiguei na documentação do JS o que era exatamente um TypeError:
*O que é um TypeError? * O TypeError é ativado quando um operador ou argumento passado para uma função é incompativel com o tipo esperado por esse operador ou função.
Ou seja, forEach() estaria recebendo um tipo que não seria capaz de resolver. Reesolvi olhar quais tipos seriam esses?
Array.prototype.forEach() O método forEach() executa uma dada função em cada elemento de um array.
Logo, data não estava recebendo um array. Fui atrás de quem estava fornecendo a informação através de fetch: o servidor em json
colei a url no meu navegador que fetch estava processando no código:
O JSON Server apresentou um menu com os dados que estava buscando em "db.json" , entretanto o conteúdo desse json não estava condizendo com o que estava sendo solicitado pelo objeto clienteService em listaClientes-controller.js Olhei então o conteúdo do arquivo db.json dentro do VSCode:
{
"posts": [
{ "id": 1, "title": "json-server", "author": "typicode" }
],
"comments": [
{ "id": 1, "body": "some comment", "postId": 1 }
],
"profile": { "name": "typicode" }
}
Mas quando esses dados foram inseridos nesse arquivo, considerando que o projeto foi puxado diretamente do github da aula? Aparentemente no momento em iniciamos o servidor com a linha de comando "json-server --watch db.json"
o script não encontrou o arquivo db.json e, para que pudesse rodar, criou um arquivo padrão para que o server não retornasse um erro. Isso provavelmente aconteceu porque executamos o comando dentro do diretório "admin" quando o correto seria te-lo executado no diretório "PROJETO_INICIAL"
Deletei o db.json criado e o problema foi resolvido.
Espero ter ajudado!