Я работаю над приложением среднего стека и пытаюсь запустить его на Heroku.
Вот структура папки
Как вы можете видеть, мой бэкэнд находится в бэкэнд-папке, а мой интерфейс - в папке mapreacdt.
Вот что находится внутри сервера. js:
const mongoose = require("mongoose");
const express = require("express");
var cors = require("cors");
const bodyParser = require("body-parser");
const logger = require("morgan");
const Data = require("./data");
const path = require("path");
require("dotenv").config();
const API_PORT = process.env.PORT || 3001;
const app = express();
app.use(cors());
const router = express.Router();
// connects our back end code with the database
mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true });
let db = mongoose.connection;
db.once("open", () => console.log("connected to the database"));
// checks if connection with the database is successful
db.on("error", console.error.bind(console, "MongoDB connection error:"));
if (process.env.NODE_ENV === "production") {
app.use(express.static("../mapreacdt/build"));
}
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(logger("dev"));
app.get("*", (request, response) => {
response.sendFile(path.join("../mapreacdt", "build", "index.html"));
});
router.get("/", (req, res) => {
res.send("hello world");
});
// append /api for our http requests
app.use("/api", router);
// launch our backend into a port
app.listen(API_PORT, () => console.log(`LISTENING ON PORT ${API_PORT}`));
Вот журналы Heroku
Я вижу, что что-то не так с моим app.get и моим app.use. Я искал решения, но все они использовали __dirname в path.join и app.use. И это имеет смысл, потому что в этих примерах их сервер. js находился в том же каталоге, что и индекс. html. Мой сервер. js находится вне текущего каталога, поэтому я сделал "../". Какой правильный абсолютный путь к mapreacdt / build / index. html?