在获取所有成员的个人资料数据时,express 出现内部服务器错误

问题描述 投票:0回答:0

我尝试从 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 服务器上部署这个应用程序时它开始出现内部服务器错误......无法调试......

mongodb express mern internal-server-error
© www.soinside.com 2019 - 2024. All rights reserved.