Arhn - архитектура программирования

Соединение отклонено Axios.post с SendGrid

Недавно я закончил учебный курс по программированию и работаю над своим веб-портфолио React. Я хочу добавить контактную форму, которая принимает имя посетителя, адрес электронной почты и сообщение, а затем отправляет мне эту информацию по электронной почте. С этой целью я следовал руководству (https://www.youtube.com/watch?v=tqmLxgvof70&list=PLnpdZyv-BjINbUjmTUsyziHz_4fa9hM5G&). Однако я получаю сообщение об ошибке...

Error: Network Error                                                      ContactPage.js:56 
at createError (createError.js:16)
at XMLHttpRequest.handleError (xhr.js:84)

POST http://localhost:3030/api/email net::ERR_CONNECTION_REFUSED         xhr.js:177

Ошибка может быть прослежена до этого Axios.post...

Axios.post("http://localhost:3030/api/email", this.state)
      .then((res) => {
        if (res.data.success) {
          this.setState({
            disabled: false,
            emailSent: true,
          });
        } else {
          this.setState({
            disabled: false,
            emailSent: false,
          });
        }
      })
      .catch((err) => {
        console.log(err);

        this.setState({
          disabled: false,
          emailSent: false,
        });
      });

Я не уверен, что происходит не так, любая помощь будет оценена.

Вот некоторый внутренний код.

const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");

const sendGrid = require("@sendGrid/mail");

const app = express();

app.use(bodyParser.json());

app.use(cors());

app.use((req, res, next) => {
  res.setHeader("Access-Control-Allow-Origin", "*");
  res.setHeader(
    "Access-Control-Allow-Methods",
    "GET, POST, PUT, PATCH, DELETE"
  );
  res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
  next();
});

app.get("/api", (req, res, next) => {
  res.send("API Status: Running");
});

app.post("/api/email", (req, res, next) => {
//   sendGrid.setApiKey('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');
  sendGrid.setApiKey(process.env.SENDGRID_API_KEY);
  const msg = {
    to: "[email protected]",
    from: req.body.email,
    subject: "Portfolio Contact",
    text: req.body.message,
  };

  sendGrid
    .send(msg)
    .then((result) => {
      res.status(200).json({
        success: true,
      });
    })
    .catch((err) => {
      console.log("error: ", err);
      res.status(401).json({
        success: false,
      });
    });
});

app.listen(3030, "0.0.0.0");

  • Включили ли вы CORS в своем API? 01.12.2020
  • У меня есть, но в другом файле. Тот, у которого есть маршрут app.post. 01.12.2020
  • Хм. Трудно сказать, не видя вашего внутреннего кода. Если вы можете опубликовать это здесь, это было бы полезно! Кроме того, вы можете проверить этот ответ на аналогичную проблему stackoverflow.com/a/45247822/4668680 01.12.2020
  • Спасибо, посмотрю ветку. Я отредактировал свой комментарий, включив в него внутренний код. 01.12.2020
  • Я не смог воссоздать ошибку, которую вы видите. Возможно, это проблема с брандмауэром? Или, возможно, localhost не сопоставлен с 0.0.0.0 на вашем компьютере? 01.12.2020
  • Как мне сопоставить 0.0.0.0 с локальным хостом? 01.12.2020

Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..