Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

then is not a function

Buenas, en la lección "Crear y Borrar Clientes" Video 02, me marca este error en el Console de Chrome:

Uncaught TypeError: clientServices.crearCliente(...).then is not a function at HTMLFormElement. (registro.controller.js:12:48)

Es el script de registro.controller.js, obvio tampoco me guarda los registros en el Json. Este es mi código, es igual al del instructor, ¿alguien sabe cual es el problema? Ya llevo atorado aquí rato y no encuentro la falla. Gracias de antemano.

import { clientServices } from "../service/client-service.js";
const formulario = document.querySelector("[data-form]");

formulario.addEventListener("submit", (evento)=>{
    evento.preventDefault() //Con esto prevenimos se comporte como form ordinario

    const nombre = document.querySelector("[data-nombre]").value;
    const email = document.querySelector("[data-email]").value;

    console.log(nombre, "-", email);

    clientServices.crearCliente(nombre, email).then((respuesta) =>{
        window.location.href = "/screens/registro_completado.html"
    })
    .catch((err) => console.log(err));
});
1 respuesta
solución!

Buenas, ya encontré el error...

"Googleando", descubrí que no me marcaba como función "then" porque solo funciona con 'promesas', y dije, bueno, el código es el mismo, no veo la falta. Resulta que exáminándolo, la función 'crearCliente' se origina en otro script, el "ClientServices", y en este, el método POST entra como segundo parámetro en el fetch, y yo no no tenía así. El VS, a veces completa el código con palabras predefinidas o cuando uno pone una coma o le da por cerrar los paréntesis antes de tiempo. Además tenía una mayúscula donde no va.

Este es mi código erróneo del ClientServices, pueden ver las fallas mencionadas:

const listaClientes = () => fetch("http://localhost:3000/perfil").then((respuesta) => respuesta.json());

const crearCliente = (nombre, email) =>{
  return fetch("http://localhost:3000/perfil"), {
    method: "POST",
    Headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify({nombre, email, id: uuid.v4()}),
  }
}

Les aconsejo a todos que revisen bien su código, especialmente si es de VS. Espero esto le sirva a alguien.