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

Next.js中GET与NextAuth参数类型不匹配问题及修正

解决Next.js App Router中NextAuth参数类型不匹配问题

问题根源

你用的是Next.js App Router(路径为app/api/.../route.ts),这个路由体系下的API函数参数要求是Request或NextRequest类型,但你代码里用了Pages Router专属的NextApiRequest/NextApiResponse,导致类型不兼容。

修正步骤及代码

  1. 替换类型导入:从next/server导入App Router对应的NextRequest和NextResponse,删除原来的NextApiRequest/NextApiResponse导入。
  2. 调整handler函数的参数类型,匹配App Router的要求。
  3. 保持NextAuth的配置逻辑不变,直接传入新的参数类型即可。

修正后的代码:

import { Server, Socket } from 'socket.io'
import { txsDisplay } from '../worker-callback/route';
import NextAuth from 'next-auth';
import GoogleProvider from "next-auth/providers/google"
import config from "@/../config.json";
// 替换为App Router的类型
import { NextRequest, NextResponse } from 'next/server';

async function handler(req: NextRequest, res: NextResponse) {
  // 前置逻辑保持不变
  return await NextAuth(req, res, {
    providers: [
        GoogleProvider({
          clientId: config.GOOGLE_ID!,
          clientSecret: config.GOOGLE_SECRET!,
        }),
        // 可添加其他登录提供商
    ],
    callbacks: {
      session({ session, user }) {
        // 自定义session逻辑
        return session;
      }
    }
  })
}

export { handler as GET };

额外提示

代码里的// FIXME: duplicate code提示可以把NextAuth的配置抽成单独文件(比如app/auth.ts),这样其他需要用到的地方可以直接导入复用,避免重复代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:22:12