Estoy tratando de crear un sistema de inicio de sesión que sea parte de mi proyecto con React, Express, MySQL y Axios, pero sigo recibiendo este error: no detectado (en promesa) Error: Solicitud abortada
Lado del servidor:
const express = require("express"); const cors = require("cors"); const mysql = require("mysql"); const app = express(); app.use(express.json()) app.use(cors()); const db = mysql.createConnection({ host: "localhost", user: "root", password: "cool12345", database: "users" }) db.connect(err => { if(err){ return err; } }) console.log(db) app.post("/register", (req, res) => { const username = req.body.username; const password = req.body.password; const email = req.body.email; db.query("INSERT INTO teachers (name, email, password) VALUES (?,?)", [username, email, password], (error, result) => { console.log(error) }) db.query("INSERT INTO teachers (name, email, password) VALUES ('test', 'test2', 'test3')") }) app.listen(4000, () => { console.log("Listening on port 4000") })lado del cliente:
import React, { useState } from 'react' import "../styling/SignUp.css"; import { useHistory } from "react-router-dom" import Axios from "axios"; function SignUp() { const [usernameReg, setUsernameReg] = useState("") const [emailReg, setEmailReg] = useState("") const [passwordReg, setPasswordReg] = useState("") const register = () => { Axios.post("https://localhost:4000/register", {username: usernameReg, email:emailReg, password: passwordReg}).then((response) => { console.log(response) }) }la función en el lado del cliente devuelve un formulario pero hay demasiado código, así que lo dejé fuera de esta pregunta. El botón de registro tiene una función de controlador onClick que ejecuta el registro.
Dudo que su host local tenga un certificado SSL
probar:
Axios.post("http://localhost:4000/register", {username: usernameReg, email:emailReg, password: passwordReg}).then((response) => { console.log(response) })http en lugar de https
EDITAR: Me apresuré demasiado para llegar a una conclusión. ¿Qué es ese objeto que estás pasando a axios? Creo que debería ser:
Axios.post("http://localhost:4000/register", { data: { username: usernameReg, email:emailReg, password: passwordReg } }).then((response) => { console.log(response) }).catch(err => console.log(err))También puede detectar el error. (Para que no sea 'no capturado')
Axios.post("http://localhost:4000/register", headers: { 'Content-Type': 'application/json', }, { data: { username: usernameReg, email:emailReg, password: passwordReg } }).then((response) => { console.log(response) }).catch(err => console.log(err))Intente configurar un encabezado llamado Content-Type/application/json cuando esté utilizando una solicitud de publicación. application/json se usa para transferir datos json a través de solicitudes.