Проблема с отправкой запроса в React и Express с Nodemailer - PullRequest
0 голосов
/ 12 декабря 2018

я пытаюсь использовать nodemailer в стеке express /actjs, но у меня возникают некоторые проблемы.

В компоненте activjs у меня есть:

handleSubmit = async e => {
    console.log(e);
    e.preventDefault();
    await axios
      .post("http://localhost:5000/api/form", {
        firstName: "Name",
        lastName: "Lname"
      })
      .then(function(response) {
        console.log(response);
      })
      .catch(function(error) {
        console.log(error);
      });
  };

А затем на стороне сервера:

app.post("api/form", (req, res) => {
  let transporter = nodemailer.createTransport({
    host: "smtp.ethereal.email",
    port: 587,
    auth: {
      user: "user",
      pass: "pass"
    }
  });

  let mailOptions = {
    from: "test@test.com",
    to: "mail@ethereal.email",
    replyTo: "test@test.com",
    subject: "New msg",
    text: "Hi",
    html: "<p>Just an email</p>"
  };

  transporter.sendMail(mailOptions, (err, info) => {
    if (err) {
      return console.log(err);
    }
    console.log("message sent: ", info.msg);
  });
});

сервер работает

const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`server in port: ${port}`));

Ошибка, которую я имею в консоли te *

POST http://localhost:5000/api/form 404 (Not Found)

и ошибка консоли

Error: Request failed with status code 404
    at createError (createError.js:17)
    at settle (settle.js:19)
    at XMLHttpRequest.handleLoad (xhr.js:78)

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 12 декабря 2018

Причина, по которой вы получаете код состояния 404, заключается в том, что вы забыли косую черту до api/form.Это должно быть app.post('/api/form').

Кроме того, кстати, вы не ответили.Это приведет к превышению времени ожидания ответа после выполнения запроса, который ожидает ваш код.

axios
  .post("http://localhost:5000/api/form", {
    firstName: "Name",
    lastName: "Lname"
  })
  .then(function(response) {
    console.log(response); // NO RESPONSE IS COMING
  })
...