Я создал и развернул веб-сайт Basi c для Heroku. В этом приложении я использую сторонний API для отправки электронных писем (sendgrid) в контактной форме. Когда я запускал свое приложение локально на localhost: 3000, API работал как антивирус и отправлял мне электронные письма. Однако, как только я развернул свое приложение на Heroku, я получаю эту ошибку . Когда я запускаю heroku logs --tail
в своем терминале, я получаю это .
По непонятным причинам API теперь перестал работать, когда я запускаю его также и локально. Я вижу, ошибка 503 означает ошибку сети, поэтому я как-то не делаю запрос к серверу? Единственное, что я изменил, что, как я мог подумать, сломало бы это:
- Я удалил маршрутизатор реакции, чтобы изменить страницы, и вместо этого использовал реакцию-прокрутку. Может быть, это перепуталось с маршрутами, которые я использую в своем файле
contact.js
для отправки объекта в sendgird? - Я переместил свой ключ API в
.env
вместо того, чтобы сохранять его в своих глобальных переменных среды. Я использовал dotenv, чтобы выяснить это, но, может быть, я где-то ошибся? Когда я запускаю console.log(process.env.REACT_APP_SENDGRID_API_KEY)
, он записывает правильный ключ.
Здесь я вызываю API из контакта. js Форма:
emailApi = () => {
let sendgridObj = {
to: 'caseyclinga@gmail.com',
from: this.state.from,
subject: this.state.subject,
text: this.state.text
}
this.resetState();
axios.post('/', sendgridObj)
.then(res => console.log(`CONTACT.JS RESPONSE: ${res}`))
.catch(err => console.log(`CONTACT.JS ERROR: ${err}`));
}
Это сервер. js file:
const express = require('express');
var app = express();
const SgMail = require('@sendgrid/mail');
const path = require('path');
require('dotenv').config();
SgMail.setApiKey(process.env.REACT_APP_SENDGRID_API_KEY);
//Middleware
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
const PORT = process.env.PORT || 5000;
//Serve static assets if in production
if(process.env.NODE_ENV === 'production') {
//Set static folder
app.use(express.static('client/build'))
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'))
})
}
app.post('/', (req, res) => {
console.log(req.body)
SgMail.send(req.body)
.then(res => console.log(`SERVER.JS RESPONSE: ${res}`))
.catch(err => console.log(`SERVER.JS ERROR: ${err}`));
});
app.listen(PORT, () => console.log(`Server running on port ${PORT}`))
Вот мой развернутый сайт: https://still-sands-49669.herokuapp.com/
Вот мой код: https://github.com/caseycling/portfolio