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

Next.js 14.2.4 generateStaticParams报错:静态导出参数缺失

问题排查与解决:Next.js 14.2.4 output: export 下的路由参数错误

错误原因分析

  1. 路由参数名不匹配:动态路由文件夹是[work],意味着Next.js会将该路由的动态参数命名为work,但generateStaticParams返回的是{ id: "work-1" }这类对象,参数键名id和路由要求的work不匹配,导致Next.js无法识别对应静态页面的参数。
  2. 语法错误:generateStaticParams的返回数组中,元素之间缺少逗号,结尾用了冒号:而非分号;,引发代码执行异常。
  3. 参数解构错误:组件中从params解构了id,但实际params里只有对应路由的work字段,解构和后续逻辑不匹配。

解决方案

  1. 调整generateStaticParams返回的参数键名,将id改为work,和路由文件夹的参数名保持一致。
  2. 修复数组元素的逗号缺失问题,将结尾的冒号改为分号。
  3. 组件中从params解构work,并在switch逻辑中使用该值。

修正后的/[work]/page.js代码

import Work1 from "../works/Work1";
import Work2 from "../works/Work2";
import Work3 from "../works/Work3";

export function generateStaticParams() {
  return [
    { work: "work-1" },
    { work: "work-2" },
    { work: "work-3" }
  ];
}

export default function WorkPage({ params }) {
  const { work } = params;

  const project = (workId) => {
    switch (workId) {
      case "work-1":
        return <Work1 />;
      case "work-2":
        return <Work2 />;
      case "work-3":
        return <Work3 />;
      default:
        return <h1>Something went wrong.</h1>;
    }
  };

  return <div>{project(work)}</div>;
}

额外说明

使用output: export模式时,Next.js要求所有动态路由必须通过generateStaticParams生成所有可能的静态参数值,且参数键名必须和路由文件夹名称(即[xxx]中的xxx)完全一致,否则无法正确生成静态页面文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:31:07