提问者:小点点

错误:请求失败,状态码为500,但在我刷新页面后有效


当我第一次运行我的Next. Js/MongoDB项目时,它总是用“错误:请求失败,状态码为500”来迎接我,但在我刷新页面后,它完全正常工作。.当我托管我的网站时,这会是一个问题吗?我如何解决它?

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);
    }
  }
}
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);
    }
  }
}

这张图片显示了我的终端和错误

1个未处理的错误

生成页面时发生此错误。任何控制台日志都将显示在终端窗口中。

文件:///C:/用户/Y520/桌面/webDevelopment/click-n-ate/node_modules/axios/lib/core/createError. js(16:15)

文件:///C:/用户/Y520/桌面/webDevelopment/click-n-ate/node_modules/axios/lib/core/settle. js(17:12)

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

节点:事件(538:35)

节点:域(475:12)

节点:内部/流/可读(1345:12)

节点:内部/流程/task_queues(83:21)


共2个答案

匿名用户

原来问题是我在dbConnect之前没有使用await,所以它应该是这样的:

 await dbConnect();

而不是

dbConnect();

匿名用户

当您的应用程序开始运行时,dbConnect中尚未准备好,请尝试在dbConnect()之前使用await,或者尝试在顶级代码中添加外部代码,以便在启动时执行一次,而不是在每次处理程序运行时执行。