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

运行2年的NextAuth+Firebase项目Vercel部署后突发500错误无法登录

认证路由500错误排查求助

项目配置

  • 技术栈:Next.js + Firebase + firebase/auth + NextAuth
  • 部署平台:Vercel,上线2年运行正常
  • 权限控制:后台路由通过Google OAuth限制仅@foobar.com域名邮箱登录,服务端水合生成后台门户,硬编码规则校验NextAuth会话邮箱UID

故障现象

  • 48小时前突然出现认证路由500错误,此前30天无部署记录,从未遇到同类认证问题
  • 首次出现后多次刷新曾短暂恢复,但10分钟后再次刷新又触发500错误,至今无法访问

代码问题

Dashboard组件存在明显空指针错误:当session为null时,仍尝试访问session.fbLoginToken,代码片段如下:

import { useSession, getSession, signIn, signOut as nextSignOut } from "next-auth/react"
import { getAuth, signInWithCustomToken, signOut as fbSignOut } from "firebase/auth";
import { useEffect } from "react";

const Dashboard = () => {
  const { data: session } = useSession({
    required: true,
    onUnauthenticated() {
      signIn()
    }
  })

  const auth = session ? getAuth() : null
  if (!session) {
    signInWithCustomToken(auth, session.fbLoginToken) 
  } 

  return (
    <Component />
  )
}
export async function getServerSideProps(context) {
  return {
    props: {
      session: await getSession(context),
    },
  }

[...nextauth.js]配置了Google Provider及自定义jwt、session回调,用于生成Firebase自定义令牌赋予管理员权限

错误日志

  • Vercel服务器日志:TypeError: Cannot read properties of null (reading 'fbLoginToken'),指向Dashboard组件对应行
  • 前端控制台:访问/portal/deals触发登录流程,完成后重定向回登录页,出现[next-auth][error][CLIENT_FETCH_ERROR],提示无法获取/api/auth/providers
  • Firestore连接错误:@firebase/firestore: Firestore (9.6.1): Could not reach Cloud Firestore backend

已尝试操作

  • 开发环境移除认证校验后,页面和数据访问正常,确认数据库连通性无问题
  • 切换Node.js版本(16.x/18.x/20.x)重新部署,问题未解决
  • 在[...nextauth.js]中添加日志,显示API可正常获取包含fbLoginToken的完整会话对象,但前端仍报错

恳请帮忙定位问题根源并提供解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:50:16