Next.js中getTicketById()报错:Cannot read properties of undefined (reading 'foundTicket')
Next.js 13+ getTicketById() 报错:TypeError: Cannot read properties of undefined (reading 'foundTicket')
我是Next.js新手,跟着YouTube教程开发票务应用,代码托管在GitHub的edit-existing-item分支。目前遇到问题:getTickets() 能正常通过Mongoose从MongoDB获取数据,但 getTicketById() 函数触发以下错误:
TypeError: Cannot read properties of undefined (reading 'foundTicket')
报错位置在 app\TicketPage\[id]\page.jsx 第30行。
环境信息
- Node.js 版本:v18.16.0(无法更新)
- Next.js 版本:尝试过14.0.0、13.0.8、13.5.6及canary版本,问题均未解决
相关代码片段
app\TicketPage[id]\page.jsx(报错行附近)
async function getTicketById(id) { const res = await fetch(`/api/tickets/${id}`); if (!res.ok) throw new Error('Failed to fetch ticket'); const data = await res.json(); return data.foundTicket; // 第30行 } export default async function TicketPage({ params }) { const ticket = await getTicketById(params.id); return ( // 页面渲染内容 ); }
API路由(app/api/tickets/[id]/route.js)
import Ticket from '@/models/Ticket'; import connectDB from '@/utils/db'; export async function GET(request, { params }) { await connectDB(); try { const foundTicket = await Ticket.findById(params.id); if (!foundTicket) { return new Response(JSON.stringify({ message: 'Ticket not found' }), { status: 404 }); } return new Response(JSON.stringify({ foundTicket }), { status: 200 }); } catch (err) { return new Response(JSON.stringify({ message: 'Error fetching ticket' }), { status: 500 }); } }
我已经尝试更换Next.js版本,但问题依旧,请问如何排查和解决这个错误?
内容的提问来源于stack exchange,提问作者Janosch
相关产品推荐
相关产品推荐

