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

在Next.js中使用getServerSideProps从Strapi取数据返回undefined,求排查

问题排查与修复

你的代码存在两个关键问题,导致获取的数据始终为undefined:

1. 组件接收Props的方式错误

你在组件参数里写的是{props},但getServerSideProps返回的是{ props: { data } }——这意味着传递给组件的Props对象里直接包含data字段,而非嵌套在props中。组件应该直接解构data,而非外层的props。

修正后的组件代码:

function Products({data}) {
  console.log(data); // 现在能正确拿到数据

  return (
    <div className=''>
      <div>
      </div>
    </div>
  );
}

2. 未处理HTTP请求异常

虽然浏览器能正常访问链接,但服务器端的fetch请求可能因HTTP状态码异常(如401权限验证失败、404资源不存在等)导致res.json()返回undefined。必须先检查响应状态是否正常。

修正后的getServerSideProps:

export async function getServerSideProps() {
  const res = await fetch(`http://localhost:1337/api/products?populate=*`);
  
  // 先验证请求是否成功
  if (!res.ok) {
    console.error(`请求失败,状态码:${res.status}`);
    // 可根据需求返回空数据或抛出错误
    return { props: { data: [] } };
  }
  
  const data = await res.json();
  console.log(data); // 现在能正确打印数据
  
  return { props: { data } };
}

额外补充:如果你的Strapi开启了权限验证,服务器端请求可能需要携带认证头(如Bearer Token)。浏览器能访问可能是因为前端存储了认证信息,但服务器端请求未携带,导致返回空数据或被拒绝。可以查看Strapi控制台日志确认请求状态。

内容的提问来源于stack exchange,提问作者user18373410

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:06:30