Как развернуть приложение Express, которое использует Express Router - PullRequest
0 голосов
/ 10 апреля 2020

Я пытался загрузить серверную часть моего приложения MERN на heroku, и пока мои маршруты express не работают вообще, хотя другие мои маршруты работают.

// index. js - первые 2 маршрута работают, но последний, использующий post, не

const express = require("express");
const postRoute = require("./routes/post_route");
const cors = require("cors");
const mongoose = require("mongoose");
const app = express();

app.get("/", function (req, res) {
  res.send("hello world");
});
app.get("/test", function (req, res) {
  res.send({ msg: "this is a test" });
});

app.use("/post", postRoute);

mongoose.connect(process.env.MONGO_URI, {
  useNewUrlParser: true,
  useCreateIndex: true,
  useUnifiedTopology: true,
});
const connection = mongoose.connection;
connection.once("open", () => {});

post-route. js

const router = require("express").Router();
let Post = require("../models/post");

router.route("/getPosts").get((req, res, next) => {
  Post.find({}).then(function(p) {
    res.send(p);
  });
});
module.exports = router;

heroku logs

2020-04-10T13:34:09.992512+00:00 heroku[router]: at=info method=GET path="/post" host=thawing-retreat-00072.herokuapp.com request_id=0a71bb79-2273-4f58-8e27-75dbda4c9dbd fwd="99.246.147.48" dyno=web.1 connect=1ms service=3ms status=404 bytes=419 protocol=https
2020-04-10T13:34:47.561331+00:00 heroku[router]: at=info method=GET path="/post" host=thawing-retreat-00072.herokuapp.com request_id=5796a7a6-c56d-441e-a8dd-21e05be493e4 fwd="99.246.147.48" dyno=web.1 connect=0ms service=2ms status=404 bytes=419 protocol=https
2020-04-10T13:34:54.990894+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/post/getPosts" host=thawing-retreat-00072.herokuapp.com request_id=9eb17ea9-f7e0-4a44-b9f9-001017a65901 fwd="99.246.147.48" dyno=web.1 connect=1ms service=30001ms status=503 bytes=0 protocol=https
2020-04-10T13:34:59.025301+00:00 heroku[router]: at=info method=GET path="/test" host=thawing-retreat-00072.herokuapp.com request_id=280e6299-6d2f-4683-815d-7fab82507020 fwd="99.246.147.48" dyno=web.1 connect=0ms service=2ms status=200 bytes=263 protocol=https
2020-04-10T13:35:45.133193+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/post/getPosts" host=thawing-retreat-00072.herokuapp.com request_id=b981cec7-0f7f-4bfc-a068-13e020f9a4fe fwd="99.246.147.48" dyno=web.1 connect=0ms service=30000ms status=503 bytes=0 protocol=https
2020-04-10T13:41:26.598411+00:00 heroku[router]: at=info method=GET path="/getPosts" host=thawing-retreat-00072.herokuapp.com request_id=416473f2-c4e2-44c7-91b7-a61e49a002e2 fwd="99.246.147.48" dyno=web.1 connect=0ms service=2ms status=404 bytes=423 protocol=https
2020-04-10T13:41:31.318390+00:00 heroku[router]: at=info method=GET path="/getPosts" host=thawing-retreat-00072.herokuapp.com request_id=f65311c9-c213-44c5-ac00-d53512683687 fwd="99.246.147.48" dyno=web.1 connect=0ms service=3ms status=404 bytes=423 protocol=https
2020-04-10T13:42:24.401120+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/post/getPosts" host=thawing-retreat-00072.herokuapp.com request_id=6bc38c15-725f-4f43-941c-c6c1afd7e933 fwd="99.246.147.48" dyno=web.1 connect=0ms service=30000ms status=503 bytes=0 protocol=https

package. json file

{
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cors": "^2.8.5",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "express-validator": "^6.4.0",
    "mongodb": "^3.5.5",
    "mongoose": "^5.9.5",
    "socket.io": "^2.3.0"
  },
  "engines": {
    "node":"12.16.0"
  },
  "proxy": "http://localhost:5000"
}


Приложение работает отлично локально, но не в сети.

1 Ответ

0 голосов
/ 10 апреля 2020

Похоже, что вы неправильно написали маршрут, используя _ вместо - в индексе. js, это код, который должен работать:

const express = require("express");
const postRoute = require("./routes/post-route");
const cors = require("cors");
const mongoose = require("mongoose");
const app = express();

app.get("/", function (req, res) {
  res.send("hello world");
});
app.get("/test", function (req, res) {
  res.send({ msg: "this is a test" });
});

app.use("/post", postRoute);
...