authService.createUserWithEmailAndPassword is not a function
트위터 클론 코딩을 진행하던 도중에 firebase와 회원가입, 로그인 기능을 연동하면서 문제가 생겼다.
먼저 firebase의 auth.currentUser 로 로그인 상태여부를 판별해서 Router를 통해 회원가입/로그인 페이지로 이동 시켰다.
그런데 회원 가입할 때 이메일과 비밀번호를 입력하면 firebase에서 회원을 등록하고 해당 정보로 자동으로 로그인 상태로 반환해준다.
그.러.나
회원 가입시 이메일과 암호를 입력하고 가입을 누르면 위와 같은 오류가 떴다.
최근 방식과 옛날 방식의 코드가 좀 달라졌다.
자세한 내용은
Javascript를 사용하여 비밀번호 기반 계정을 사용하여 Firebase에 인증
Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 Javascript를 사용
firebase.google.com
여기를 참고하면 되는데 나의 방식은 다음과 같다.
로그인 하려는 페이지에서 'firebase/auth' 패키지로부터
import {getAuth, createUserWithEmailAndPassword, signInWithEmailAndPassword,} from "firebase/auth";
를 가져온다.
그리고 Promise 이기 때문에 다음과 같이 메소드 앞에 async를 붙여주고 메소드 앞에 await를 붙여준다.
그런데 다음과 같은 오류가 또 발생했다.
이리저리 봐도 문제가 뭔지 해결이 안됐었는데 알고보니 바보였다.
newAccount를 통해 로그인 or 회원가입 여부를 판별해서 메소드를 태우는데 초기값을 false로 주었으니 당연히 계정 생성이 아니라 로그인 메소드를 태우느라 유저 정보가 없음에도 로그인 시도를 해서 발생하는 응답이었다.
해결해주고 나면 firebase Authentication 에 접근하면 다음과 같이 생성된 것을 확인할 수 있다.