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

Next.js+TypeScript报错:getStaticProps不是合法入口导出值

报错原因分析与解决方案

核心报错原因

1. 客户端组件无法使用getStaticProps

你在页面顶部添加了"use client"指令,这会将整个页面标记为客户端组件。而getStaticProps、getServerSideProps这类服务端数据获取函数仅支持在服务器组件中导出,客户端组件不允许导出这类函数,因此TypeScript抛出了"getStaticProps" is not a valid Next.js entry export value.ts(71002)错误。

2. getStaticProps不适合依赖用户会话的场景

你在getStaticProps中调用getServerSession获取当前用户信息,但getStaticProps是在项目构建阶段执行的,此时没有用户请求上下文,根本无法获取到登录用户的会话数据,这个逻辑本身就无法正常运行。


修复方案

步骤1:移除"use client"指令

删除页面顶部的"use client",让页面恢复为服务器组件,这样就能正常导出服务端数据获取函数。

步骤2:替换getStaticProps为getServerSideProps

由于需要根据当前登录用户动态获取数据,改用getServerSideProps——它会在每次用户请求时执行,能正常获取到请求上下文和用户会话。

修复后的完整代码:

import TextSimilarityForm from "@/components/TextSimilarityForm";
import { authOptions } from "@/lib/auth";
import { db } from "@/lib/db";
import { getServerSession } from "next-auth";
import { FC, useState, useRef } from "react";
import { GetServerSideProps, NextPage } from "next";
import { ApiKey } from "@prisma/client";

interface apiKeyProps {
  apiKey: ApiKey | null;
}

const page = ({ apiKey }: apiKeyProps) => {
  return (
    <div className="max-w-7xl mx-auto mt-16">
      {/* @ts-expect-error Server Component */}
      {apiKey && <TextSimilarityForm />}
    </div>
  );
};

export const getServerSideProps: GetServerSideProps<apiKeyProps> = async (context) => {
  const session = await getServerSession(context.req, context.res, authOptions);
  
  // 处理未登录情况
  if (!session) {
    return { props: { apiKey: null } };
  }

  const apiKey = await db.apiKey.findFirst({
    where: {
      userId: session.user.id,
      enabled: true,
    },
  });
  
  return {
    props: { apiKey }, 
  };
};

export default page;

补充说明:如果TextSimilarityForm是客户端组件,服务器组件可以直接渲染它,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:22:39