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

