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-urlCookie,但部署版本未携带 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
相关产品推荐
相关产品推荐

