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

Next.js客户端组件使用useSession钩子报错:useSession不是函数

解决useSession不是函数的错误

针对你遇到的TypeError: useSession is not a function错误,按以下步骤排查:

  • 必须在根组件中添加SessionProvider
    客户端组件要使用useSession,必须在根布局(比如app/layout.tsx)中用SessionProvider包裹所有子组件。示例代码:

    'use client'
    import { SessionProvider } from 'next-auth/react'
    
    export default function RootLayout({
      children,
    }: {
      children: React.ReactNode
    }) {
      return (
        <html lang="en">
          <body>
            <SessionProvider>{children}</SessionProvider>
          </body>
        </html>
      )
    }
    

    注意根布局要加上'use client'指令,否则无法使用客户端组件的Provider。

  • 确认next-auth版本与Next.js兼容
    确保你用的是next-auth@v4(Next.js 13+推荐版本),检查package.json中的版本号,比如:

    "next-auth": "^4.24.7",
    "next": "^14.0.0",
    "react": "^18.2.0"
    

    如果版本不匹配,卸载现有版本后重新安装对应兼容版本:

    npm uninstall next-auth
    npm install next-auth@latest
    
  • 清理依赖缓存与Next.js缓存
    除了重装next-auth,还可以彻底清理依赖缓存:

    rm -rf node_modules package-lock.json
    npm install
    

    启动开发服务器时清理Next.js缓存:

    next dev --clean
    
  • 检查auth配置文件与路由
    确保app/api/auth/[...nextauth]/route.ts文件正确导出auth配置,示例:

    import NextAuth from 'next-auth'
    import { authOptions } from '@/lib/auth'
    
    const handler = NextAuth(authOptions)
    export { handler as GET, handler as POST }
    

    同时确认authOptions中配置了至少一个认证provider,且没有语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:33:09