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

Next.js静态站点:getStaticProps导入TS/JSX数据遇序列化错误的解决

问题解答

一、导入的静态数据是否默认静态?

直接从JS/TS文件导入的静态数据(无动态生成逻辑)本身就是静态的。Next.js在构建阶段会将这类数据打包进客户端代码,不需要额外通过getStaticProps处理就能在组件中使用。

二、是否必须通过getStaticProps处理?

不需要。getStaticProps主要用于构建时动态获取外部数据(比如API、数据库)的场景,本地静态数据完全可以直接在组件中导入使用,没必要走这个流程。

三、序列化报错的解决方法

报错核心原因是:getStaticProps返回的props必须是可JSON序列化的数据,而JSX元素内部包含Symbol类型($$typeof字段),无法被JSON序列化。以下两种方案可以解决问题:

方案1:修改数据结构,在组件中生成JSX

把数据文件里的JSX替换成纯文本/配置项,在组件渲染时再生成对应的JSX:

// projects.tsx
const projects = [
  {
    id: "6853939",
    name: "Project 01",
    title: "Title 01 ",
    previewImg: "/images/projectThumbnails/image01.jpg",
    extraText: "Extra 01"
  },
  {
    id: "6853939",
    name: "Project 02",
    title: "Title 02 ",
    previewImg: "/images/projectThumbnails/image02.jpg",
    extraText: "Extra 02"
  }
] as const;

export default projects;
// index.tsx
import projects from "../data/projects.tsx";

const IndexPage = () => {
  return (
    <>
      <div>
        {projects.map((i) => (
          <div key={i.id}>
            {i.title}
            <div>{i.extraText}</div>
          </div>
        ))}
      </div>
      {/* 注意:原代码中`names.names`是未定义变量,需修正或删除 */}
    </>
  );
};

// 直接删除无用的getStaticProps
export default IndexPage;

方案2:保留JSX定义,直接在组件中导入使用

如果必须在数据文件中定义JSX(比如复杂自定义组件),直接在组件中导入数据并渲染即可,不要通过getStaticProps传递:

// projects.tsx
import React from "react";

const projects = [
  {
    id: "6853939",
    name: "Project 01",
    title: "Title 01 ",
    previewImg: "/images/projectThumbnails/image01.jpg",
    extra: <div>Extra 01</div>
  },
  {
    id: "6853939",
    name: "Project 02",
    title: "Title 02 ",
    previewImg: "/images/projectThumbnails/image02.jpg",
    extra: <div>Extra 02</div>
  }
] as const;

export default projects;
// index.tsx
import projects from "../data/projects.tsx";

const IndexPage = () => {
  return (
    <>
      <div>
        {projects.map((i) => (
          <div key={i.id}>
            {i.title}
            {i.extra}
          </div>
        ))}
      </div>
    </>
  );
};

// 删除getStaticProps
export default IndexPage;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:18:29