я получаю, что 404 api не найден

#javascript #node.js #reactjs

#javascript #node.js #reactjs

Вопрос:

Я использую mailgun для отправки электронной почты, но я получаю ошибку 404 (не найден). Вот моя работа

Клиентская сторона

 this.state= {
   message: "main message",
}

handeSendRequest(){
  await fetch('/api/eMail', {method:'post', headers: {'Content-type' : 'application/json' }}, body: JSON.stringify(this.state)){
}

}
render(){
  return(
    <Button onClick={this.handeSendRequest} > Send it </Button>
   )

 }
  

emailRouter.js

 const mailgun = require('mailgun-js')(configuration);

router.post('/api/eMail', async (req,res) => {
    try {

        let message = req.body.message;
      sendEmail(message,function (err) {
                    if(err){
                        console.log(err);
                    }else{
                        console.log("Sent email");
                    }

                });

 res.status(200).json({
            success: true,
            msg: 'Success'
        });
    }
    catch(err) {
        res.status(400).json({
            success: false,
            msg: err
        });
    }
});


function mail(message, callback){

  const mail = `<p>{message}</p>`;

    var mail = mailcomposer({
        from: 'from@email.com',
        to: "to@email.com",
        subject: "subject",
        html: mail
    });
    mail.build(function(mailBuildError, message) {

        var dataToSend = {
            to: to@email.com,
            message: message.toString('ascii')
        };

        mailgun.messages().sendMime(dataToSend, function (sendError, body) {
            if (sendError) {
                console.log(sendError);
            }
            callback(sendError);

        });
    });
}
  

Server.js

 const app = express();

const emailUtil = require('./emailRouter.js');

app.use('/api/eMail', emailUtil);
  

Не уверен, почему, но я получаю эти ошибки http://localhost:3000/api/eMail 404 (Not Found) . Похоже, что клиентская сторона верна, но серверная часть по какой-то причине не получает вызов. Как я могу изменить свою работу, чтобы электронное письмо могло быть успешно отправлено.

Комментарии:

1. Вы неправильно используете async / await на клиенте или сервере… Я бы посоветовал поискать правильный способ его использования…

Ответ №1:

А что, если вы просто зарегистрируетесь следующим образом: app.use(emailUtil); потому что вы регистрируете оба / api / EMAIL в своем server.js и в вашем emailRouter.js

Тогда, я думаю, express хочет, чтобы вы запросили по / api / eMail / api / email

Комментарии:

1. Привет, Кристоф упоминает / api / eMail / api / eMail. например, localhost: 3000 / api / eMail / api / Электронная почта . В файле вашего сервера указано, что маршруты в emailUtil привязаны к / api / eMail / и в emailRouter.js файл, у вас есть /api / eMail/, следовательно, / api /eMail / api / email. Если вы отредактируете строку в файле сервера на app.use(‘/’, emailUtil);, тогда вы сможете перейти на localhost: 3000 /api / eMail