serverMiddleware маршруты 404 в производстве - PullRequest
0 голосов
/ 06 июня 2019

Я создаю веб-сайт, используя Nuxt, и контактную форму, используя Nodemailer / Express.

Он отражает https://blog.lichter.io/posts/sending-emails-through-nuxtjs/ и хорошо работает на моем локальном хосте, но не в производстве >> возвращает 404 ненайдено сообщение об ошибке.

TIA для справки.

nuxt.config.js

serverMiddleware: [
    '~/api/contact'
],

/ api / contact.js

const express = require('express')
const nodemailer = require('nodemailer')

const app = express()

app.use(express.json())

app.get('/', function (req, res) {
  res.status(405).json({ error: 'sorry!' })
})

app.post('/', function (req, res) {
  sendMail(req.body.payload)
  res.status(200).json({ 'message': 'OH YEAH' })
})

module.exports = {
  path: '/api/contact',
  handler: app
}

const sendMail = (payload) => {
  let transporter = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    secure: true,
    auth: {
      user: 'me@gmail.com',
      pass: 'mypassword'
    },
    tls: {
      rejectUnauthorized: false
    }
  })

  transporter.sendMail({
    from: 'IB Website <me@gmail.com>',
    to: 'me@gmail.com',
    subject: `Message from ${payload.name}, id: ${Math.random().toString(36).substr(2, 9)}`,
    html: `<p><strong>Message:</strong> ${payload.message}</p>
           <p><strong>Name:</strong> ${payload.name}</p>
           <p><strong>Email:</strong> ${payload.email}</p>
           <p><strong>Phone:</strong> ${payload.phone}</p>`
  })
}

/компоненты / ContactForm.vue

async sendEmail() {
        try {
          await this.$axios.$post('/api/contact', {
            payload: this.form
          })

          await new Promise(resolve => setTimeout(resolve, 2500))
        } catch (e) {

          console.error(e)
        }
      }
...