Приложение React не загружается после развертывания Heroku - PullRequest
2 голосов
/ 01 августа 2020

Итак, я создал приложение стека MERN, которое отлично работает локально. После развертывания в Heroku страница React не загружается.

"Журналы heroku" выдают ошибку:

2020-08-01T07:18:59.922864+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2020-08-01T07:19:00.006437+00:00 heroku[web.1]: Process exited with status 143

Затем процесс снова пытается запустить мое приложение, и он дает мне предыдущую ошибку и эту ошибку:

2020-08-01T07:20:20.368320+00:00 heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path="/" host=andy-keeper-app.herokuapp.com request_id=138cb3bc-3b1f-4443-88ff-f4348003cfc5 fwd="8.3.88.41" dyno= connect= service= status=503 bytes= protocol=https

Кажется, что вторая ошибка связана с моей БД, меня больше интересует, как отобразить страницу React

Я исследовал первую проблему, и, похоже, это проблема бесплатного дино. Однако пользователи, спрашивающие об этой проблеме, похоже, получают ее после того, как их приложение простаивает через 30 минут. Мое приложение вообще не загружается.

Есть ли способ просмотреть дополнительные журналы ошибок, чтобы найти мою проблему? Или у кого-нибудь был подобный опыт.

Вот мой сервер. js файл, любые другие файлы, которые вам нужны, спрашивайте, и я сразу обновлю его

Сервер. jS

require("dotenv").config();

const app = express();
const PORT = process.env.PORT || 5000;

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

// Been defined in .env and Heroku Config Logs
const url = process.env.ATLAS_URL;

app.use(express.static(path.join(__dirname, "client", "public")));

mongoose.connect(url, {
  useNewUrlParser: true,
  useCreateIndex: true,
  useUnifiedTopology: true,
  useFindAndModify: false,
});

const connection = mongoose.connection;
connection.once("open", () => {
  console.log("MongoDB database connection established successfully");
});

// Routes
const userRouter = require("./routes/user");

app.use("/user", userRouter);

if (process.env.NODE_ENV === "production") {
  console.log("Running in production mode");
  app.use(express.static(path.join("client", "public")));
  app.get("*", (req, res) => {
    res.sendFile(path.join(__dirname + "/client/public/index.html"));
  });
} else {
  console.log("Running in development mode");
}

app.listen(PORT, () => {
  console.log("Server is running on port: " + PORT);
});

Вот мой пакет. json файл для серверной

{
  "main": "index.js",
  "scripts": {
    "start": "node server.js",
    "heroku-postbuild": "cd client && npm install && npm install && npm run build"
  },
  "engines": {
    "node": "12.18.0"
  }
}

Спасибо!

...