You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:12:34