NodeJS API 在本地工作但不在 Heroku

问题描述

所以,我有一个 MERN 应用程序(M -> MysqL),并且我将我的 MysqL 数据库部署在了 smart-cloud 上。
我用我从 smart-cloud 获得的值替换了相应的字段(主机、用户、密码和数据库),并且数据库工作正常(在 Workbench 上测试并通过在本地运行后端服务器)。
现在,当我将 NodeJS API 部署到 Heroku 时,我只能访问“/”路由,所有其他路由都给出 404。我通过 Heroku 仪表板添加了所有 env 变量。 我无法弄清楚为什么会发生这种情况。

我的 MysqL 连接如下所示:

const connection = MysqL.createConnection({
  host: <the host address I got from cLever-cloud>,user: process.env.MysqL_REMOTE_USER,password: process.env.MysqL_REMOTE_PASS,database: <the db name I got from cLever-cloud>,timezone: "UTC+0"
});

我的 app.js

const express = require("express");
const path = require("path");
const cookieParser = require("cookie-parser");
const logger = require("morgan");
const cors = require("cors");
require("dotenv").config();
require("./db/db");

const fileupload = require('express-fileupload'); 


const indexRouter = require("./routes/index");
const studentRouter = require("./routes/students");
const teacherRouter = require("./routes/teachers");
const classroomrouter = require("./routes/classroom");
const tiMetableRouter = require("./routes/tiMetable");
const quizRouter = require("./routes/quiz");
const assignmentRouter=require("./routes/assignment");
const resourceRouter=require("./routes/resource")

const app = express();


app.use(fileupload({useTempFiles: true}))

app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(cors());
app.use(express.static(path.join(__dirname,"public")));

app.use("/",indexRouter);
app.use("/students",studentRouter);
app.use("/teachers",teacherRouter);
app.use("/classroom",classroomrouter);
app.use("/tiMetable",tiMetableRouter);
app.use("/quiz",quizRouter);
app.use("/assignment",assignmentRouter);
app.use("/resource",resourceRouter);

app.listen(process.env.PORT || "3001",() =>
{
    console.log("Connected.");
});

解决方法

现在部署成功。我在其他分支上推送到 heroku master,而我自己的 master 落后于我假设的几个提交。

现在一切正常。