Я получаю внутреннюю ошибку сервера теперь, когда мое приложение развернуто на heroku.Все работало хорошо локально.Я занимаюсь этим уже несколько дней, поэтому я решил обратиться к сообществу !!!!
Я пытался изменить пути как в экспрессе, так и в реакции, но все равно ничего не работает.
Вот мои файлы экспресс и маршрутов
const express = require("express");
const mongo_uri = require("./config/db");
const path = require("path");
const bodyParser = require("body-parser");
const MongoClient = require("mongodb").MongoClient;
const helmet = require("helmet");
const cors = require("cors");
const backingRouter = require("./routes/backingRouter");
const chordsRouter = require("./routes/chordsRouter");
const arpeggiosRouter = require("./routes/arpeggiosRouter");
const app = express();
app.use(helmet());
app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// Handle CORS
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "*");
if (req.method === "OPTIONS") {
res.header("Access-Control-Allow-Methods", "PUT, POST, PATCH, DELETE, GET");
return res.status(200).json({});
}
next();
});
app.use("/api/backing-tracks", backingRouter);
app.use("/api/chords", chordsRouter);
app.use("/api/arpeggios", arpeggiosRouter);
// Production mode
if (process.env.NODE_ENV === "production") {
app.use(express.static("client/build"));
app.get("*", (req, res) => {
res.sendFile(path.resolve((__dirname, "client", "build", "index.html")));
});
}
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server Started`));
MongoClient.connect(mongo_uri, { useNewUrlParser: true }).then(client => {
const db = client.db("backingTrackData");
const collection = db.collection("backings");
app.locals.collection = collection;
console.log("MongoDb running...");
});
const express = require("express");
const router = express.Router();
router.get("/", (req, res, next) => {
const { collection } = req.app.locals;
collection
.find({ tonality: { $in: ["major", "minor"] } })
.toArray()
.then(response => res.status(200).json(response))
.catch(error => res.status(500).json(error));
});
module.exports = router;
вот файл реакции
import React, { Component } from "react";
import axios from "axios";
import SelectTonality from "./SelectTonality";
import SelectTempo from "./SelectTempo";
import Dropdown from "./Dropdown";
import ReactAudioPlayer from "react-audio-player";
class backingTracks extends Component {
state = {
backingTracksMaj: [],
backingTracksMin: [],
toggleMenu: false,
selectedBtn: "major",
selectedTempo: "90",
selectedTrack: "",
selectedTrackName: ""
};
componentDidMount() {
axios
.get("/api/backing-tracks")
.then(res => {
const backingTracksMaj = res.data
.filter(track => track.tonality === "major")
.map(newTrack => {
return newTrack;
});
const backingTracksMin = res.data
.filter(track => track.tonality === "minor")
.map(newTrack => {
return newTrack;
});
this.setState({ backingTracksMaj, backingTracksMin });
})
.catch(error => console.log(error));
}
Домашняя страница загружается нормально, но когда я перехожу на страницу отступов или любую другую страницу, яполучить: GET https://jazz -guitar-woodshed.herokuapp.com / api / backing-track 500 (внутренняя ошибка сервера)
Заранее благодарим за любую помощь !!!
РЕДАКТИРОВАТЬ: Ошибка Heroku
2019-05-22T23:34:23.840908+00:00 app[web.1]: TypeError: Cannot read property 'find' of undefined
2019-05-22T23:34:23.840921+00:00 app[web.1]: at router.get (/app/routes/backingRouter.js:8:6)
2019-05-22T23:34:23.840924+00:00 app[web.1]: at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
2019-05-22T23:34:23.840926+00:00 app[web.1]: at next (/app/node_modules/express/lib/router/route.js:137:13)
2019-05-22T23:34:23.840927+00:00 app[web.1]: at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3)
2019-05-22T23:34:23.840929+00:00 app[web.1]: at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
2019-05-22T23:34:23.840931+00:00 app[web.1]: at /app/node_modules/express/lib/router/index.js:281:22
2019-05-22T23:34:23.840933+00:00 app[web.1]: at Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
2019-05-22T23:34:23.840938+00:00 app[web.1]: at router (/app/node_modules/express/lib/router/index.js:47:12)
2019-05-23T00:08:42.152915+00:00 heroku[web.1]: Idling
2019-05-23T00:08:42.157365+00:00 heroku[web.1]: State changed from up to down
2019-05-23T00:08:43.157938+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2019-05-23T00:08:43.269315+00:00 heroku[web.1]: Process exited with status 143
2019-05-22T23:34:23.840935+00:00 app[web.1]: at next (/app/node_modules/express/lib/router/index.js:275:10)