skip to Main Content

When I run my Next.Js/MongoDB Project for the first time it always greets me with a "Error: Request failed with status code 500", but after I refresh the page it works totally fine..
Is this going to be a problem when I host my website? and how can I solve it?

My Code:

/api/Items/index.js:

import dbConnect from '../../../lib/mongo';
import Item from '../../../models/Item'

export default async function handler(req, res) {
  const { method } = req;

  dbConnect()

  if (method === "GET") {
    try {
      const items = await Item.find();
      res.status(200).json(items);

    } catch (err) {
      res.status(500).json(err);
    }
  }
  if (method === "POST") {
    try {
      const item = await Item.create(req.body);
      res.status(201).json(item);

    } catch (err) {
      res.status(500).json(err);
    }
  }
}

/api/Items/[id].js:

import dbConnect from '../../../lib/mongo'
import Item from '../../../models/Item'

export default async function handler(req, res) {
  const { method, query: { id } } = req;

  dbConnect()

  if (method === "GET") {
    try {
      const foodItem = await Item.findById(id);
      res.status(200).json(foodItem);

    } catch (err) {
      res.status(500).json(err);
    }
  }
  if (method === "PUT") {
    try {
      const item = await Item.create(req.body);
      res.status(201).json(item);


    } catch (err) {
      res.status(500).json(err);
    }
  }
  if (method === "DELETE") {
    try {
      const item = await Item.create(req.body);
      res.status(201).json(item);


    } catch (err) {
      res.status(500).json(err);
    }
  }
}

Here’es an image showing my Terminal and the Error

1 of 1 unhandled error

Server Error Error:

Request failed with status code 500

This error happened while generating the page. Any console logs will be displayed in the terminal window.

Call Stack

createError

file:///C:/Users/Y520/Desktop/webDevelopment/click-n-eat/node_modules/axios/lib/core/createError.js (16:15)

settle

file:///C:/Users/Y520/Desktop/webDevelopment/click-n-eat/node_modules/axios/lib/core/settle.js (17:12)

IncomingMessage.handleStreamEnd

file:///C:/Users/Y520/Desktop/webDevelopment/click-n-eat/node_modules/axios/lib/adapters/http.js (322:11)

IncomingMessage.emit

node:events (538:35)

IncomingMessage.emit

node:domain (475:12)

endReadableNT

node:internal/streams/readable (1345:12)

processTicksAndRejections

node:internal/process/task_queues (83:21)

2

Answers


  1. Chosen as BEST ANSWER

    turned out the problem is that I didn't use await before dbConnect so it should go like:

     await dbConnect();
    

    Instead of

    dbConnect();
    

  2. When your app starts running, dbConnect in not ready yet try to use await before dbConnect() or try to add outside on top level code to be excuted once at start and not on every handler run.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search