Как видно из названия, я пытаюсь внедрить Sendgrid в свой реактивный проект.Я использую серверную часть узла с экспресс-сервером и реагирующим маршрутизатором на внешнем интерфейсе.Аналогичный вопрос был задан в другом потоке, но он не знал, усложнил ли процесс реактивный маршрутизатор.Вот мой код:
Front-end
onFormSubmit = (e) => {
e.preventDefault();
if (!this.state.name || !this.state.email || !this.state.message) {
this.setState(() => ({ error: 'Please fill out all the above fields!' }));
} else {
this.setState(() => ({ error: '' }));
fetch('/contact', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: this.state.name,
email: this.state.email,
message: this.state.message
})
})
.catch((error) => {
console.error(error);
});
}
}
Back-end (настройка сервера)
const path = require('path');
const express = require('express');
const app = express();
const publicPath = path.join(__dirname, '../public');
const port = process.env.PORT || 8080;
const sgMail = require('@sendgrid/mail');
app.use(express.static(publicPath));
app.get('*', (req, res) => {
res.sendFile(path.join(publicPath, 'index.html'));
});
app.post('/contact', (req, res) => {
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
to: 'email',
from: 'email',
subject: 'New Message From Portfolio',
text: 'test',
html: '<strong>and easy to do anywhere, even with
Node.js</strong>',
};
sgMail.send(msg);
})
app.listen(port, () => {
console.log('Server is running');
});
Когда я запускаю этот код, я получаю 404 "/ контакт "не найден.Концептуально я думаю, что нахожусь в правильном месте, но мне было любопытно, почему мой интерфейс не распознает этот маршрут.Я получаю информацию о маршруте / контакте и на моем сервере есть соответствующая экспресс-почта.