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)
12
respostas

Erro ao criar usuário

Erro ao criar usuário

Após correção dos erros iniciais de instalação, não estou conseguindo criar o usuário.

Ao comentar a linha de validação, ocorre o erro:

Campo validação comentado

12 respostas

Olá, Henrique! Tudo bem com você?

Poderia compartilhar o código via github ou aqui mesmo pelo fórum, e o seu package.json?

Dessa forma irá ficar mais fácil para conseguir visualizar o erro.

Um aluno aqui da plataforma teve um problema similar e compartilhou uma solução excelente, vou deixar o link para o tópico aqui:

Fico no aguardo e espero que as informações tenham ajudado!

Até breve e bons estudos!

Olá, desisti dos 3 cursos faltantes da formação devido a erros nos projetos.

Neste caso, o erro permanece e foi utilizado o mesmo erro inicial do projeto (sem alterações nos fontes).

Os problemas iniciais descritos aqui referem-se a instalações do projeto usando o arquivo package.json original.

Para correção foi necessário a instalação manualmente de cada extensão.

O meu arquivo ficou assim:

{
  "name": "blog-do-codigo",
  "version": "1.0.0",
  "description": "> Um blog simples em Node.js",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "nodemon server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@mapbox/node-pre-gyp": "^1.0.7",
    "bcrypt": "^5.0.1",
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "nodemon": "^2.0.15",
    "sqlite3": "^5.0.2"
  }
}

Att Henrique

Obs.: Iniciei um quarto curso de node onde há vários erros, e alguns com mais de 7 meses no fórum sem respostas, no caso o curso: NodeJS: Adicionando CI ao projeto e deploy no Google Cloud

Olá, eu resolvi alterando o seguinte trecho de código no arquivo usuarios-modelo.js:

class Usuario {
  constructor(usuario) {
    this.id = usuario.id;
    this.nome = usuario.nome;
    this.email = usuario.email;
    this.senhaHash = usuario.senha
    this.valida();
  }

Olá, mesmo alterando a linhathis.senhaHash = usuario.senha os erros permanecem.

Oi Henrique, tenta manter essa parte com this.senhaHash = usuario.senha e no arquivo usuarios-controlador vc mantem o envio da senha assim:

module.exports = {
  adiciona: async (req, res) => {
    const { nome, email, senha } = req.body;

    try {
      const usuario = new Usuario({
        nome,
        email,
        senha
      });
      await usuario.adicionaSenha(senha)
      await usuario.adiciona();
      ...

Opa, não tem como editar resposta, então corrigindo o que eu escrevi por último, vc mantem no constructor do arquivo usuarios-modelo.js assim como na aula: this.senhaHash = usuario.senhaHash

Bom dia, permanece, lembrando que o erro inicial é no campo "nome".

Abrir este ticket com os iniciais que tive o que foi feito para correção: https://cursos.alura.com.br/forum/topico-erros-de-instalacao-das-extensoes-190953

Após isso, inicio e tento efetuar o post, é quando ocorre o erro deste ticket.

Att Henrique

Segue o github do projeto, sem as alterações informadas aqui, dento somente o arquivo package.json alterado.

https://github.com/HenriqueMSimoes/blog-do-codigo

Att Henrique

Boa noite Henrique,

Tenta passar os parametros pelo "form-encode", pode ser que esteja indo vazio. Tem alguns jeitos de debugar o código usando o nodemon, caso esteja usando o vscode, pelo menos só conheço esse.

Olá novamente, Henrique!

Sinto muito pelo ocorrido com os demais cursos. A Formação em JavaScript vem passando por reformulação e estamos atentos aos seus apontamentos. Obrigada por compartilhar conosco e o processo de fix já está em andamento.

Sobre o projeto em questão. O André deu uma boa sugestão acima, pois pode ser que o problema esteja ocorrendo ao enviar os parâmetros via form-encode.

Outro ponto é o consumo do body-parser. Este método está desabilitado e isso pode causar alguns erros. Nas versões mais atuais o Express fornece um middleware que trabalha com os dados (objetos) de entrada no corpo da requisição.

Então, como solucionar o problema?

Para configurar então basta substituir o bodyParser pelo middleware do express em app.js. Vou deixar um exemplo:

module.exports = () => {

    const app = express() 
    app.use(express.urlencoded({extended: true}))
    app.use(express.json())

 return app
}

Teste novamente , por gentileza, e confirme aqui se funcionou. Tudo bem?

Um abraço e até breve!

Bons estudos!

Fiz conforme o André falou, ocorre o mesmo erro.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Camila, ao usar o teu exemplo, ocorreram mais erros ao executar o app.

Mas a partir da tua explicação, consegui fazer uma alteração no código atual para usar o JSON.

const express = require('express');
const app = express();
const bodyParser = require('body-parser');

app.use(
   bodyParser.json(),
   bodyParser.urlencoded({ extended: false }),
);

module.exports = app;

Vou segui com o curso e caso ocorra mais erros, estarei reportando aqui.

Obs.: Ao alterar o app.js conforme o meu exemplo, o POST irá funcionar somente com a opção JSON. Insira aqui a descrição dessa imagem para ajudar na acessibilidade