У меня есть почтовый запрос в server / index.js, который использует два параметра req и res и отправляет электронную почту с API Mailgun. req.body получает данные из формы, которая лежит в компоненте vue. Все работает, как я хочу, в localhost, но после развертывания перестает отправлять электронные письма.
Я нашел это в документации Nuxt.js: при создании вашего веб-приложения с генерацией nuxt контекст, заданный asyncData и fetch, не будет иметь req и res. Но я не знаю, как решить эту проблему и заставить ее работать после развертывания.
const express = require('express')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')
const bodyParser = require('body-parser')
const mailgun = require('mailgun-js')
const app = express()
app.use(bodyParser.urlencoded({extended:false}))
// Import and Set Nuxt.js options
const config = require('../nuxt.config.js')
config.dev = !(process.env.NODE_ENV === 'production')
async function start() {
// Init Nuxt.js
const nuxt = new Nuxt(config)
const { host, port } = nuxt.options.server
// Build only in dev mode
if (config.dev) {
const builder = new Builder(nuxt)
await builder.build()
} else {
await nuxt.ready()
}
// Give nuxt middleware to express
app.use(nuxt.render)
// Listen the server
app.listen(port, host)
consola.ready({
message: `Server listening on http://${host}:${port}`,
badge: true
})
}
start()
app.post('/', (req, res) => {
var api_key = 'my_api_key';
var domain = 'my_domain';
var mailgun = require('mailgun-js')({apiKey: api_key, domain:
domain});
var data = {
from: `From ${req.body.userName} <${req.body.email}>`,
to: 'my_email@gmail.com',
subject: `Msg From Terminal`,
text: `Message: ${req.body.message}`
};
mailgun.messages().send(data, function (error, body, event) {
console.log(error, body, event);
});
res.redirect('/')
})
Я пробовал также с пост-запросом со стороны клиента, но затем он блокируется CORS, поэтому у меня больше нет трюков в моем наборе навыков.