NodeJS API 在本地工作但不在 Heroku 上工作
NodeJS API working locally but not on Heroku
所以,我有一个 MERN 应用程序(M -> MySQL)并且我在 clever-cloud 上部署了我的 MySQL 数据库。
我用从 clever-cloud 获得的值替换了相应的字段(主机、用户、密码和数据库),数据库工作正常(在 Workbench 和 运行 本地后端服务器上测试)。
现在,当我将我的 NodeJS API 部署到 Heroku 时,我只能访问“/”路由,所有其他路由都会返回 404。我通过 Heroku 仪表板添加了所有环境变量。
我无法弄清楚为什么会这样。
我的 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 在我假设的地方落后了几次提交。
现在可以正常使用了。
所以,我有一个 MERN 应用程序(M -> MySQL)并且我在 clever-cloud 上部署了我的 MySQL 数据库。
我用从 clever-cloud 获得的值替换了相应的字段(主机、用户、密码和数据库),数据库工作正常(在 Workbench 和 运行 本地后端服务器上测试)。
现在,当我将我的 NodeJS API 部署到 Heroku 时,我只能访问“/”路由,所有其他路由都会返回 404。我通过 Heroku 仪表板添加了所有环境变量。
我无法弄清楚为什么会这样。
我的 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 在我假设的地方落后了几次提交。
现在可以正常使用了。