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

Next.js动态页面加载Strapi博客内容时出现Title undefined错误

问题定位&修复方案

核心错误点1:props变量名不匹配

你在getStaticProps中返回的属性名是posts,但页面组件入参解构的是blog,二者名称完全不对应,导致blog天然为undefined,这是报错的直接原因。
修复方式二选一即可:

// 方案1:修改组件入参
export default function BlogPage({posts}) {
    return (
      <>     
      <div>
        {posts.title}
      </div>
</>
)}

// 方案2:修改getStaticProps返回值
return {
    props: { blog: posts },
};

核心错误点2:字段名大小写不匹配

你在Strapi中定义的Blogs集合字段是小写title,但代码中读取的是大写开头的Title,JS语法大小写敏感,即便props匹配成功也会读不到值。

可选适配修复(Strapi v4版本必改)

如果你用的是Strapi v4版本,默认REST API返回结构是嵌套的data对象,且单条内容直接请求/blogs/[id]比过滤查询效率更高,可直接替换getStaticProps逻辑:

export async function getStaticProps({ params }) {
  const { id } = params;
  // populate=*用于连带查询图片等关联字段,不需要可以去掉
  const res = await fetch(`http://localhost:1337/blogs/${id}?populate=*`);
  const resData = await res.json();
  // Strapi v4取data.attributes,v3版本直接用resData即可
  const blog = resData.data?.attributes || resData;
  return {
    props: { blog },
  };
}

本地验证方法

修改代码前可直接在浏览器访问http://localhost:1337/blogs/1,确认接口实际返回的结构和字段名,和代码逻辑对齐即可。修改完成后需要重启Next开发服务,触发静态路径和静态Props重新生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:09:01