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

Error: Cannot find module 'faker'

CODIGO: Peguei os 3 codigos disponiveis no Github na pasta servicos

ERRO TERMINAL:

C:\Users\Usuário\Projeto\servicos>node clientes.js internal/modules/cjs/loader.js:985 throw err; ^

Error: Cannot find module 'faker' Require stack:

  • C:\Users\Usuário\Projeto\servicos\clientes.js at Function.Module.resolveFilename (internal/modules/cjs/loader.js:982:15) at Function.Module.load (internal/modules/cjs/loader.js:864:27) at Module.require (internal/modules/cjs/loader.js:1044:19) at require (internal/modules/cjs/helpers.js:77:18) at Object. (C:\Users\Usuário\Projeto\servicos\clientes.js:5:15) at Module.compile (internal/modules/cjs/loader.js:1158:30) at Object.Module.extensions..js (internal/modules/cjs/loader.js:1178:10) at Module.load (internal/modules/cjs/loader.js:1002:32) at Function.Module.load (internal/modules/cjs/loader.js:901:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/runmain.js:74:12) { code: 'MODULE_NOT_FOUND', requireStack: [ 'C:\Users\Usuário\Projeto\servicos\clientes.js' ] }
17 respostas

Oi! você executou npm install nesta pasta servico antes?

Sim, instalei agora de novo p ter certeza. Não aparece nem o Package.json nem o package-lock nem node-modules

Olá Maria, tudo bem?

Pode postar o seu package.json, pf?

Da pasta serviço ou do geral?

de ambas, pf

geral: https://github.com/mariaeduardagsa/nodejs-api-rest/blob/main/package-lock.json

https://github.com/mariaeduardagsa/nodejs-api-rest/blob/main/package.json

servicos: package-lock { "name": "servicos", "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { "faker": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/faker/-/faker-4.1.0.tgz", "integrity": "sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8=" } }

}

package.json

{ "name": "servicos", "version": "1.0.0", "description": "", "main": "clientes.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "faker": "^4.1.0" } }

Agora eu tentei de novo e está dizendo que o erro que dá tanto no Postman quanto no terminal é que length não está definido. Vou mandar no git a parte do codigo que tem LENGTH

TypeError: Cannot read property 'length' of undefined

const moment = require('moment') const axios = require('axios') const conexao = require('../infraestrutura/conexao')

class Atendimento { adiciona(atendimento, res){ const dataCriacao = moment().format('YYYY-MM-DD HH:MM:SS') const data = moment(atendimento.data, 'DD/MM/YYYY').format('YYYY-MM-DD HH:MM:SS')

const dataEhValida = moment(data).isSameOrAfter(dataCriacao)
const clienteEhValido = atendimento.cliente.length >= 5

const validacoes = [
  {
      nome: 'data',
      valido: dataEhValida,
      mensagem: 'Data deve ser maior ou igual a data atual'

    },
    {
      nome: 'cliente',
      valido: clienteEhValido,
      mensagem: 'Cliente deve ter pelo menos 5 caracteres'

    }

]

const erros = validacoes.filter(campo => !campo.valido)
const existemErros = erros.length

if(existemErros){
  res.status(400).json(erros)
} else {
  const atendimentoDatado = {...atendimento, dataCriacao, data}


const sql = 'INSERT INTO Atendimentos SET ?'

conexao.query(sql, atendimentoDatado, (erro, resultados) => {
  if(erro){
    res.status(400).json(erro)
  } else {
    res.status(201).json(atendimento)
  }
})

}

}

lista(res) { const sql = 'SELECT * FROM Atendimentos'

conexao.query(sql, (erro, resultados) => {
  if(erro){
    res.status(400).json(erro)
  } else {
    res.status(200).json(resultados)
  }

})

}

buscaPorId(id, res){

const sql = `SELECT * FROM Atendimentos WHERE id=${id}`

conexao.query(sql, async (erro, resultados) => {
  const atendimento = resultados[0]

  const cpf = atendimento.cliente

  if(erro){
    res.status(400).json(erro)
  } else {

    const { data } = await axios.get('http://localhost:8082/${cpf}')
    atendimento.cliente = data

    res.status(200).json(atendimento)
  }
})

}

altera(id, valores, res){ if(valores.data){ valores.data = moment(valores.data, 'DD/MM/YYYY').format('YYYY-MM-DD HH:MM:SS') } const sql = 'UPDATE Atendimentos SET ? WHERE id=?'

conexao.query(sql, [valores, id], (erro, resultados) => {
  if(erro){
    res.status(400).json(erro)
  } else {
    res.status(200).json({...valores, id})
  }
})

}

deleta(id, res){ const sql = 'DELETE FROM Atendimentos WHERE id=?'

conexao.query(sql, id, (erro, resultados) => {
  if(erro){
    res.status(400).json(erro)
  } else {
    res.status(200).json({id})
  }
})

} }

module.exports = new Atendimento

Vc tem este projeto servicos tbm no Github?

Olá duda,

Entao eu fiz um pull agora das suas alteracoes e nao encontrei a lib faker no package.json. Vou adicionar aqui e ver se muda o erro.

Ok, espero tua atualização! Vc viu que está dando um erro de length no postman agora? Pode me ajudar nisso também? Desde já agradeço muito kk estou iniciando em back

Olá Maria,

Uma pergunta. Tem algum motivo de os controllers cliente e atendimentos estarem em portas diferentes? O clientes está cadastrado na rota 8082 e o atendimentos está na rota 3000.

Eu fiz exatamente o que o instrutor pede pra fazer. Se vc olhar o git da Alura https://github.com/alura-cursos/nodejs-2/tree/aula-3 está igual o meu. Estava tudo funcionando, nessa aula que instala o axios e a pasta serviços que começa a dar errado.

solução!

Show, fiz algumas alterações no seu projeto. Vamos lá:

  • Adicionei a dependencia faker na versão 4.1.0 no seu package.json
  • Criei duas pastas chamadas controllers e models.
  • Fiz um copy da classe Atendimento do repositório da Alura já com os métodos configurados. (PS: Caso nao tenha chegado na parte de configurar a classe Atendimento, sugiro q vc apague o conteudo da minha e implemente ela a medida que for avançando no curso)
  • Removi o listen do controller de clientes que estava apontando para a porta 8082 e adicionei na porta 3000 da aplicação.
  • Movi os arquivos clientes.js e atendimentos.js para a pasta controllers, devido ao customExpress estar carregando os arquivos de dentro da pasta controller.

Poderia me conceder acesso, ao seu repo para eu enviar um PR com as alteracoes? Meu usuário é thiagopaschoal

Espero que de tudo certo, agora. Qlqr coisa só chamar!!

Te adicionei no Menage acess, convite enviado. Vê ai se deu certo! E de novo, obrigada!

Magina, atualizei seu projeto! Tem um PR lá esperando vc!

Um abraço e bons estudos!! :-)