onAuthStateChanged参数报错:实参数量不符致TypeScript编译失败
问题原因与解决方法
你的代码报错核心原因是调用onAuthStateChanged时参数顺序完全错误。
Firebase的onAuthStateChanged函数正确的参数顺序是:
- 第一个参数必须是Firebase Auth实例(即你代码里的
auth) - 第二个参数才是登录状态变化的回调函数
你直接把回调函数作为第一个参数传入,TypeScript会将这个回调判定为函数要求的nextOrObserver参数,但此时你缺少了必填的Auth实例参数,因此才会抛出“Expected 2-4 arguments, but got 1”的错误——函数要求至少传入Auth实例和回调两个参数,你只传了一个回调。
另外,你的回调函数参数也存在问题:onAuthStateChanged的回调仅接收一个参数(当前的user对象),不存在第二个_next参数,这个参数是多余的。
修正后的代码:
// Check if user is logged in onAuthStateChanged(auth, async (user: any) => { if (user) { console.log(user); } else { const result = await signInWithPopup(auth, provider); console.log(result); } });
调整参数顺序并移除多余的回调参数后,即可解决TypeScript编译错误。
内容的提问来源于stack exchange,提问作者Markussim
相关产品推荐
相关产品推荐

