Это личная страница портфолио, внутри которой я реализую контактную форму, используя nodemailer.
Все настройки nodemailer настраиваются на стороне сервера. Мне просто нужен совет, как указать правильное место в почтовом запросе клиента с точки зрения разработки и развертывания.
Я рассчитал, что это необходимо для установки переменной среды для производства и разработки и выполнения выборки на основе этого. Теперь мне просто интересно, как go найти все, что я бы поместил в выборку для производства.
будет ли это просто указание на мое собственное приложение: fetch(www.mydomain.com/send-email, data) ...
I Я нахожусь в документации Heroku, пытаясь понять это.
По сути, у меня есть огромное слепое пятно, которое поражает API сервера из приложения Create React, которое не запускается независимо на localhost: 3000. Мне еще предстоит попасть на серверный маршрут от моего клиента, который не обслуживается локально на localhost. Когда я отправляю sh это в Heroku, мне нужен правильный маршрут или конфигурация, мне нужен совет, как это сделать.
Я немного понимаю проксирование. Просто интересно, какие шаги нужно предпринять, чтобы правильно попасть на мой серверный маршрут с клиента / сервера, развернутого на Heroku, в отличие от localhost: 3000 во время развертывания.
Когда я нахожусь в разработке, я почти всегда топчу ios. опубликуйте сервер, который я развернул на localhost: 3000, на который я затем обращаюсь с чем-то вроде этого, исходящим от моего клиента ..
axios.post('localhost:3000/send-email', data)
.then( () => {
setSent(true)
})
.then(() => {
resetForm()
})
.catch((err)=> {
console.log('Message not sent', err)
})
}
... который затем обрабатывается конечной точкой на express сервер прослушивает localhost: 3000, это несколько похоже на то, что я вставил ниже.
const express =
require('express'),
bodyParser = require('body-parser'),
nodemailer = require('nodemailer'),
cors = require('cors'), path = require('path'),
port = process.env.PORT || 3000, publicPath = path.join(__dirname, '..', 'build');
require('dotenv').config();
const app = express();
app.use(cors());
app.use(express.static(publicPath));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.get('*', (req, res) => {
res.sendFile(path.join(publicPath, 'index.html'));
});
app.post('/send-email', (req, res) => {
console.log('request: ', req.body)
let data = req.body;
let transporter = nodemailer.createTransport({
service: 'gmail',
port: 465,
auth: {
user: process.env.EMAIL,
pass: process.env.PASSWORD
}
});
let mailOptions = {
from: data.email,
to: process.env.EMAIL,
subject: `${data.subject}`,
html: `<p>${data.name}</p>
<p>${data.email}</p>
<p>${data.message}</p>`
};
transporter.sendMail(mailOptions,
(err, res) => {
if(err) {
res.send(err)
} else {
res.send('Success')
}
transporter.close();
});
})
app.listen(port, () => {
console.log(`Server is up on port ${port}!`);
});
структура папок выглядит так:
main
|-server
|-server.js
|-src
|-components
|-Contact.js