我尝试从 mongodb atlas 获取所有成员的数据......它在本地工作正常但是当我在 cyclic.sh 服务器上部署这个应用程序时它开始出现内部服务器错误......无法调试......
React 客户端
import React, { useEffect, useState } from "react";
import axios from "axios";
import Card from "../components/Card";
import Spinner from "../components/Spinner";
function Team() {
const [members, setMembers] = useState([]);
const [isLoad, setLoad] = useState(true);
useEffect(() => {
axios
.get("/api/member")
.then((response) => {
if (response.status === 200) setMembers(response.data);
setLoad(false);
})
.catch((err) => {
setLoad(false);
console.log(err.response.data.message);
console.log(err.response);
});
}, []);
return (
<div className="container-fluid">
<div
className="row align-items-center justify-content-center"
style={{ minHeight: "100vh" }}
>
{isLoad ? (
<Spinner />
) : (
members.map((item) => <Card detail={item} key={item._id} />)
)}
</div>
</div>
);
}
export default Team;
快递服务器
Server.js
require("dotenv").config();
require("colors");
const express = require("express");
const app = express();
const cors = require("cors");
const morgan = require("morgan");
const port = process.env.PORT || 5000;
const path = require("path");
const connectDb = require("./db/db");
app.use(express.json({ limit: "50mb" }));
app.use(express.urlencoded({ limit: "50mb", extended: true }));
app.use(cors());
app.use(morgan("dev"));
app.use("/api/member", require("./routes/memberRoutes"));
app.use(express.static(path.join(__dirname, "../client/build")));
app.get("*", function (req, res) {
res.sendFile(path.join(__dirname, "../client/build/index.html"));
});
connectDb()
.then(() => {
app.listen(port, () =>
console.log(
`Server is up and running on the port ${port}`.magenta.underline.bold
)
);
})
.catch((err) => console.log(err));
db.js
const mongoose = require("mongoose");
const connectDb = async () => {
try {
mongoose.set("strictQuery", true);
const conn = await mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
connectTimeoutMS: 30000,
});
console.log("MONGODB is connected".cyan.underline.bold);
} catch (error) {
console.log(error);
}
};
module.exports = connectDb;
memberRoutes.js
const express = require("express");
const {
login,
updateMember,
getMembers,
} = require("../controllers/memberController");
const protect = require("../middleware/authMiddleware");
const router = express.Router();
router.post("/", login);
router.get("/", getMembers);
router.put("/", protect, updateMember);
module.exports = router;
memberController.js
const Member = require("../models/memberModel");
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const _ = require("lodash");
const login = async (req, res) => {
const { email, password } = req.body;
const memberExists = await Member.findOne({ email });
if (!memberExists)
return res.status(404).json({ message: "Member not found !!!" });
if (memberExists && (await bcrypt.compare(password, memberExists.password))) {
let usertoken = genToken(memberExists._id);
const userDetails = _.omit(memberExists.toObject(), "password");
res.status(200).json({
message: "Logged-in successfully !!!",
user: userDetails,
token: usertoken,
});
} else res.status(401).json({ message: "Invalid password !!!" });
};
const updateMember = async (req, res) => {
try {
const memberExists = await Member.findByIdAndUpdate(
req.user._id,
req.body,
{
new: true,
}
);
const userDetails = _.omit(memberExists.toObject(), "password");
res
.status(200)
.json({ message: "Profile updated successfully !!!", user: userDetails });
} catch (error) {
console.log(error);
res.status(401).json(error.message);
}
};
const getMembers = async (req, res) => {
try {
const users = await Member.find({});
res.status(200).json(users);
} catch (error) {
res.status(404).json({ message: error.message });
}
};
const genToken = (id) => {
return jwt.sign({ id }, process.env.SECRET, { expiresIn: "3d" });
};
module.exports = {
login,
updateMember,
getMembers,
};
我尝试从 mongodb atlas 获取所有成员的数据......它在本地工作正常但是当我在 cyclic.sh 服务器上部署这个应用程序时它开始出现内部服务器错误......无法调试......