Error: Request failed with status code 500 but it works after I refresh the page
Error: Request failed with status code 500 but it works after I refresh the page
当我 运行 我的 Next.Js/MongoDB 第一次项目时,它总是用“错误:请求失败,状态代码 500”来问候我,但是在我刷新页面后它工作了完全没问题..
当我托管我的网站时,这会成为问题吗?我该如何解决?
我的代码:
/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 个未处理的错误
服务器错误错误:
请求失败,状态码为 500
生成页面时发生此错误。任何控制台日志都将显示在终端 window.
调用堆栈
创建错误
file:///C:/Users/Y520/Desktop/webDevelopment/click-n-eat/node_modules/axios/lib/core/createError.js (16:15)
定居
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
节点:事件 (538:35)
IncomingMessage.emit
节点:域 (475:12)
endReadableNT
节点:internal/streams/readable (1345:12)
processTicksAndRejections
节点:internal/process/task_queues (83:21)
原来问题是我之前没有使用 await dbConnect
所以它应该是这样的:
await dbConnect();
而不是
dbConnect();
当您的应用程序启动 运行ning 时,dbConnect 尚未就绪,请尝试在 dbConnect() 之前使用 await 或尝试在顶级代码上添加外部代码,以便在启动时执行一次,而不是在每个处理程序上执行 运行.
当我 运行 我的 Next.Js/MongoDB 第一次项目时,它总是用“错误:请求失败,状态代码 500”来问候我,但是在我刷新页面后它工作了完全没问题.. 当我托管我的网站时,这会成为问题吗?我该如何解决?
我的代码:
/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 个未处理的错误
服务器错误错误:
请求失败,状态码为 500
生成页面时发生此错误。任何控制台日志都将显示在终端 window.
调用堆栈
创建错误
file:///C:/Users/Y520/Desktop/webDevelopment/click-n-eat/node_modules/axios/lib/core/createError.js (16:15)
定居
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
节点:事件 (538:35)
IncomingMessage.emit
节点:域 (475:12)
endReadableNT
节点:internal/streams/readable (1345:12)
processTicksAndRejections
节点:internal/process/task_queues (83:21)
原来问题是我之前没有使用 await dbConnect
所以它应该是这样的:
await dbConnect();
而不是
dbConnect();
当您的应用程序启动 运行ning 时,dbConnect 尚未就绪,请尝试在 dbConnect() 之前使用 await 或尝试在顶级代码上添加外部代码,以便在启动时执行一次,而不是在每个处理程序上执行 运行.