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

Netlify部署Next-Auth遇CLIENT_FETCH_ERROR 400错误求助

NextAuth部署到Netlify后出现CLIENT_FETCH_ERROR的排查建议

问题现象

本地运行正常,部署到Netlify后访问任意页面触发CLIENT_FETCH_ERROR,具体错误如下:

GET https://website.com/api/auth/session 400
--> Error: This action with HTTP GET is not supported by NextAuth.js
[next-auth][error][CLIENT_FETCH_ERROR] Unexpected token 'E', "Error: Thi"... is not valid JSON
POST https://website.com/api/auth/_log 400

本地调用http://localhost:4200/api/auth/session返回304及空对象{}。

useSession调用路径:_app > Session Provider session={session} > RouteGuard

文档预期行为

根据NextAuth文档:

  • getSession()会向/api/auth/session发送请求,返回包含session对象的Promise,无会话则返回null
  • GET /api/auth/session返回客户端安全的session对象,无会话则返回空对象,可通过session回调配置返回内容

Session回调代码

async session({ session, token, user }) {
  session.accessToken = token.accessToken
  session.user._id = token.sub
  session.user.name = token.name
  session.user.email = token.email
  if (token.login_provider) session.user.login_provider = token.login_provider
  return session
}

依赖版本

"next": "11.1.0",
"next-auth": "^4.6.1",

已完成的排查项

  • [...nextauth].ts已正确放置在/pages/api/auth目录下,命名无误
  • NEXTAUTH_URL已正确配置(未使用自定义basePath),Next.js Runtime v4.27.3自动设置和手动配置均无效
  • NEXT_PUBLIC_API_URL已正确配置(域名+/api)
  • NEXTAUTH_SECRET已正确配置
  • NextAuthOptions的pages配置{ signIn: '/auth/signin' }无误
  • /pages/auth/signin页面路径及命名正确
  • Credentials、Google、Facebook提供者的环境变量配置正确

新增排查线索

  • 本地请求携带next-auth.csrf-token、next-auth.callback-url Cookie,但部署版本未携带
  • getProviders在Netlify的getServerSideProps中无法工作,推测与SSR有关

后续排查方向

  • 检查Netlify路由配置:确认/api/auth/*路径未被_redirects或netlify.toml中的重写规则拦截、错误转发,避免API请求被处理成静态页面或其他无效路由。
  • 验证Cookie配置:生产环境下,检查NextAuth的Cookie配置是否设置了正确的domain、secure、sameSite属性。HTTPS环境需开启secure: true,跨域场景需调整sameSite为lax或none,确保浏览器能正确携带Cookie。
  • 测试API路由可用性:直接访问https://website.com/api/auth/providers,查看是否返回正常JSON响应,若返回404或错误,说明API路由未正确部署。
  • 确认Netlify环境变量加载:在Netlify部署日志中搜索NEXTAUTH_URL、NEXTAUTH_SECRET等变量,确认构建和运行阶段均已正确注入,必要时重新部署以触发变量生效。
  • 检查NextAuth初始化:确保[...nextauth].ts中显式传入secret配置项(即使已设置环境变量),避免服务器端读取环境变量失败。
  • 排查SSR请求问题:在getServerSideProps中手动调用getServerSession并传入req、res和NextAuth配置,测试是否能获取会话或提供者信息,定位服务器端是否存在配置或环境变量缺失。
  • 查看Netlify函数状态:Next.js API路由会转为Netlify Functions,在Netlify控制台的Functions页面,确认api/auth/[...nextauth]函数已部署成功,查看函数执行日志是否有错误信息。
  • 调整依赖版本:当前Next.js 11.1.0与NextAuth 4.6.1可能存在兼容性问题,尝试升级Next.js至11.x最新稳定版,或调整NextAuth版本至匹配的稳定版本,验证问题是否解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:30:54