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
相关产品推荐
相关产品推荐

