Получение ошибки не может найти: POST http://localhost:8000/api/submit - PullRequest
0 голосов
/ 08 мая 2019

У меня есть простая форма в React, которая отправляет запрос на публикацию в / api / submit, затем мой экспресс-сервер обрабатывает запрос на публикацию согласно моему фрагменту кода ниже, однако я получаю сообщение об ошибке: http://localhost:8000/api/submit 404(Не обнаружена).Я чувствую, что пропустил что-то фундаментальное.Любое предложение высоко ценится.

У меня есть мой прокси вебпак, например:

devServer: {
    contentBase: path.resolve('src'),
    hot: true,
    open: true,
    port: 8000,
    watchContentBase: true,
    historyApiFallback: true,
    proxy: {
      '/api': {
        target: 'http://localhost:4000',
        secure: false
      }
    }
  }

На стороне клиента (форма):

formSubmit(e){
    e.preventDefault()

    axios.post('/api/submit', this.state.data)
    .then(() => {
        this.setState({ sent: true }, this.resetForm())
    })
    .catch(() => {
        console.log('Message not sent')
    })
}

На стороне сервера:

app.post('/api/submit', (req, res) => {
  const data = req.body
  console.log(req.body)

  const smtpTransport = nodemailer.createTransport({
    service: 'gmail',
    port: 25,
    auth: {
      user: process.env.EMAIL,
      pass: process.env.PASS
    }
  })

  const mailOptions = {
    from: data.email,
    to: process.env.EMAIL,
    subject: 'Quote & Services',
    html: `<p>${data.name}</p>
    <p>${data.email}</p>
    <p>${data.message}</p>`
  }

  smtpTransport.sendMail(mailOptions,
    (error, res) => {
      if(error) {
        res.send(error)
      }else {
        res.send('Success')
      }
      smtpTransport.close()
    })
}) 

app.use(express.static(`${__dirname}/dist`))

app.get('/*', (req, res) => res.sendFile(`${__dirname}/dist/index.html`))

app.listen(process.env.PORT, () => console.log(`Express is serving the dist folder on port ${process.env.PORT}`))

1 Ответ

0 голосов
/ 10 мая 2019

Переменная res переопределяется в обратном вызове smtpTransport.sendMail, вы должны называть ее по-другому

...