// Check if user is logged in
onAuthStateChanged(async (user: any, _next: any) => {
if (user) {
console.log(user);
} else {
const result = await signInWithPopup(auth, provider);
console.log(result);
}
});
This code gives the error An argument for 'nextOrObserver' was not provided. Expected 2-4 arguments, but got 1.. But from what I can tell the function has two arguments.
This causes the typescipt compiler to refuse to compile.
CodePudding user response:
But from what I can tell the function has two arguments.
It's pointing out that onAuthStateChange needs 2 arguments, not that the function you write needs 2 arguments. In fact, your function should only have one argument. The piece you're missing is that you need to pass the auth instance into onAuthStateChanged. From the way you're calling signInWithPopup, i assume the variable auth contains that. If not, you can call getAuth to get it:
import { getAuth, onAuthStateChanged, User } from "firebase/auth"
// ...
onAuthStateChanged(
auth, // or getAuth()
async (user: User | null) => {
// ...
}
);
