Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

603
Views
Error: la solicitud falló con el código de estado 404, React, Axios

He creado un formulario que quiero poder enviar correos electrónicos, para hacer esto he intentado seguir este tutorial de youtube: https://www.youtube.com/watch?v=_3-By9QfFa0

Sin embargo, me encuentro con un problema en el que aparece el error en el título de la pregunta que aparece en el navegador web de mi consola cuando intento enviar el formulario. Me doy cuenta de que el problema podría tener algo que ver con una de las rutas en alguna parte, pero no puedo resolverlo (a menos que sea algo completamente diferente).

schoolForm.js

 const handleSubmit = async(e) => { e.preventDefault(); try { //I also tried using only: "/send_mail" here like I have in server.js but it didnt work await axios.post("http://localhost:3000/send_mail", { name }); } catch (error) { console.log(error); } }

servidor.js

 const express = require("express"); const app = express(); require("dotenv").config(); const bodyParser = require("body-parser"); const cors = require("cors"); const nodemailer = require("nodemailer"); app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.json()); app.use(cors()); app.post("/send_mail", cors(), async (req, res) => { let {text} = req.body; const transport = nodemailer.createTransport({ host: "smtp-mail.outlook.com", port: 587, auth: { user: "someone@hotmail.com", pass: "password" }, tls: { rejectUnauthorized: false } }); await transport.sendMail({ from: "someone@hotmail.com", to: "someone@hotmail.com", subject: "subject", html: `<p>${text}</p>` }) }); app.listen(4000, () => { console.log("Server is listening on port 4000"); });

Editar: El error que recibo en el navegador:

ingrese la descripción de la imagen aquí

¿Hay alguien que pueda ayudarme a resolver este problema? ¡La ayuda sería muy apreciada!

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Su servidor está escuchando en el puerto 4000 . // servidor.js

 app.listen(4000, () => { console.log("Server is listening on port 4000"); });

Debe usar la siguiente URL para la llamada de Axios. // formulario_escolar.js

 await axios.post("http://localhost:4000/send_mail", { // use port 4000 not 3000 name });
about 4 years ago · Juan Pablo Isaza Report

0

Configuró su servidor para escuchar el puerto 4000 pero su solicitud de axios es para el puerto 3000. Asegúrese de enviar la solicitud al puerto correcto:

 await axios.post("http://localhost:4000/send_mail", { name });

También tenga en cuenta que el body-parser está en desuso y debe usar el middleware integrado express . entonces en lugar de:

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

Deberías:

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

y puede eliminar la dependencia body-parser .

Puede leer aquí para obtener más información sobre el middleware integrado Express y sus propiedades opcionales.

EDITAR:

La razón por la que no funcionaba es porque body es un objeto creado por el propio middleware. Por lo tanto req.body no está undefined ya que el objeto del body no existe.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!