Хаки React State работают на разработку, а не на сборку (производство) - PullRequest
0 голосов
/ 02 мая 2020

Я разработал приложение для отслеживания ошибок, используя MERN, и на локальном уровне интерфейс обновляется в режиме реального времени, когда пользователь выполняет операции CRUD, используя реакционные ловушки (состояние) и реагирующий контекст.

Но как только я развернул свое приложение в облаке Google он, похоже, превратился в веб-сайт c, и если я добавляю, редактирую или удаляю его, мне нужно обновить страницу sh, чтобы увидеть изменения.

Что может быть причиной это произойдет?

Вот мой сервер. js код:

require("dotenv").config();
const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const cors = require("cors");
const mongoose = require("mongoose");
const ticketRoutes = express.Router();
const PORT = 8080;

var path = require("path");
let Ticket = require("./ticket.model");

app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

mongoose.connect(process.env.MONGO_DB, { useNewUrlParser: true, useUnifiedTopology: true }, (error) => {
  console.log(error);
});


const connection = mongoose.connection;

connection.once("open", function () {
  console.log("MongoDB database connection established successfully");
});

ticketRoutes.route("/").get(function (req, res) {
  Ticket.find(function (err, tickets) {
    if (err) {
      console.log(err);
    } else {
      res.json(tickets);
    }
  });
});

ticketRoutes.route("/:id").get(function (req, res) {
  let id = req.params.id;
  Ticket.findById(id, function (err, ticket) {
    res.json(ticket);
  });
});

ticketRoutes.route("/add").post(function (req, res) {
  let ticket = new Ticket(req.body);
  ticket
    .save()
    .then((ticket) => {
      res.status(200).json({ ticket });
    })
    .catch((err) => {
      res.status(400).send("adding new ticket failed");
    });
});

ticketRoutes.route("/delete/:id").delete(function (req, res) {
  Ticket.findByIdAndRemove(req.params.id, function (err, ticket) {
    if (err) {
      console.log(err);
      return res.status(500).send({ ticket });
    }
    return res.status(200).send({ ticket });
  });
});

ticketRoutes.route("/update/:id").post(function (req, res) {
  Ticket.findById(req.params.id, function (err, ticket) {
    if (!ticket) res.status(404).send("data is not found");
    else ticket.ticket_name = req.body.ticket_name;
    ticket.ticket_status = req.body.ticket_status;

    ticket
      .save()
      .then((ticket) => {
        res.json({ ticket });
      })
      .catch((err) => {
        res.status(400).send("Update not possible");
      });
  });
});

app.use("/tickets", ticketRoutes);
app.use(express.static(path.join(__dirname, "frontend/build")));
app.get("/*", (req, res) => {
  res.sendFile(path.join(__dirname, "frontend/build/index.html"));
});

app.listen(process.env.port || 8080, () => {
  console.log("Express app is running on port 8080");
});

1 Ответ

0 голосов
/ 03 мая 2020

Исправление было очень глубоким, но в основном мой метод развертывания в облаке Google был методом, который работал бы только с c веб-страницами. Я закончил тем, что развернул приложение с heroku, используя это замечательное руководство: введите описание ссылки здесь

...