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

NextJS 13.4 Github登录报错:getUserByAccount未定义及API返回问题

针对NextJS 13.4 Github登录问题的解决方案

问题1:OAuth回调报错“getUserByAccount is not a function”

这个错误核心原因是NextAuth配置中适配器未正确集成,或authorize函数里错误调用了未定义的getUserByAccount方法。

解决步骤:

  • 如果你使用Prisma/Drizzle等官方适配器,确保已正确安装并配置到/pages/api/auth/[...nextauth].ts中:
    import NextAuth from "next-auth";
    import GithubProvider from "next-auth/providers/github";
    import { PrismaAdapter } from "@next-auth/prisma-adapter";
    import prisma from "@/lib/prisma";
    
    export default NextAuth({
      adapter: PrismaAdapter(prisma), // 必须配置适配器才能使用内置的用户查询方法
      providers: [
        GithubProvider({
          clientId: process.env.GITHUB_ID!,
          clientSecret: process.env.GITHUB_SECRET!,
        }),
      ],
      // 自定义authorize逻辑时,需从context.adapter中获取方法
      async authorize(credentials, context) {
        const user = await context.adapter?.getUserByAccount({
          provider: "github",
          providerAccountId: credentials?.accountId,
        });
        return user;
      },
    });
    
  • 若未使用适配器,需自行实现getUserByAccount函数,不能直接调用NextAuth内置方法。

问题2:“API handler should not return a value, received object”提示

该错误出现在App Router的API路由(如/app/api/register/route.ts)中,因为NextJS 13.4的App Router要求用Response对象返回结果,而非直接返回JSON对象。

修改/app/api/register/route.ts代码:

  • 错误写法(Pages Router风格):
    export async function POST(request: Request) {
      const data = await request.json();
      // 注册逻辑处理...
      return {
        status: 200,
        json: () => ({ message: "注册成功" }),
      };
    }
    
  • 正确写法(App Router兼容):
    export async function POST(request: Request) {
      const data = await request.json();
      // 注册逻辑处理...
      return new Response(JSON.stringify({ message: "注册成功" }), {
        status: 200,
        headers: { "Content-Type": "application/json" },
      });
    }
    
  • 注意:/pages/api/auth/[...nextauth].ts属于Pages Router路由,无需修改返回方式,NextAuth会自动处理。

额外检查项

  • 执行npm update next-auth确保NextAuth版本与NextJS 13.4兼容。
  • 核对环境变量(GITHUB_ID、GITHUB_SECRET等)是否配置正确,避免因变量缺失引发间接错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:17:16