Как решить страницу не найдена ошибка в героку после развертывания - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь загрузить приложение express / node.js в heroku.Приложение успешно развернуто, но когда я пытаюсь получить доступ к URL, появляется ошибка : Not Found .

Когда я запускаю logos heroku --tail , я получаю:

Error: ENOENT: no such file or directory, stat '/client/build/index.html'

так что я думаю, что я делаю что-то не так с каталогами и папкой статики

это мой файл server.js:

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

const users = require("./routes/api/users");
const profile = require("./routes/api/profile");
const matches = require("./routes/api/matches");

const app = express();

//body-parser middleware
app.use(bodyParser.urlencoded({ extended: false, limit: "50mb" }));
app.use(bodyParser.json({ limit: "50mb" }));

//db config
const db = require("./config/keys").mongoURI;

//cors
app.use(cors());

//connect to mongoose
mongoose
 .connect(db, { useNewUrlParser: true })
 .then(() => console.log("MongoDB connected"))
 .catch(err => console.log(err));

//Passport middleware
app.use(passport.initialize());

app.use("/images", express.static(path.join(__dirname + "/images")));

//Passport config
require("./config/passport")(passport);

//Use route
app.use("/api/users", users);
app.use("/api/profile", profile);
app.use("/api/matches", matches);

//Serve static assets if in production
if (process.env.NODE_ENV === "production") {
  app.enable("trust proxy");

  //Set static folder
  app.use(express.static(path.join(__dirname, "/../client/build")));

  app.get("*", (req, res) => {
    res.sendFile(path.join(__dirname + "/../client/build/index.html"));
  });
}

const port = process.env.PORT || 5000;

app.listen(port, () => console.log(`server running on port ${port}`));

Я также включаюизображение из папок "позиции" folders

1 Ответ

0 голосов
/ 24 марта 2019

Я думаю, что так должно быть

app.use("/images", express.static(path.join(__dirname + "images")));

Редактировать: На самом деле ваше приложение ожидает найти файл на /../client/build/index.html, но этот файл не существует (что означает ошибка ENOENT). Поэтому вам нужно либо создать ожидаемую структуру каталогов, либо настроить приложение так, чтобы оно смотрело в правильном каталоге для index.html. Это то, что я теперь понимаю, я надеюсь, что это поможет тебе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...