파이어베이스 + 리코일 오류 : Cannot assign to read-only property 'currentUser' of object '#<AuthImpl>

728x90
반응형

1. 오류 발생

파이어베이스 사용해서 로그인+로그아웃 기능 구현 => 로그아웃 클릭시 해당 오류 발생

2. 오류 원인 

리코일을 사용해서 로그인 상태를 전역관리하였음

=> 로그인 시 리코일을 사용해서 저장시 오류 발생 

=> readonly 형식의 데이터를 다른 데이터로 업데이트 하려고 했던 것

=> 얕은 복사로 인한 오류 발생

 

3. 오류 해결

★ 리코일의 깊은복사를 해주기

 

깊은 복사 방법 : JSON객체 사용 ( JSON은 텍스트로 변환되서 , 아닌 경우 오류 발생)

JSON.parse(JSON.stringify(obj));

 

 

문제를 같이 고민하고 해결해준 ㅅㅎ님👍 (+리코일 깊은 복사 내용 공유)

https://github.com/firebase/firebase-js-sdk/issues/5722

 

signOut fails due to a readonly property in Auth · Issue #5722 · firebase/firebase-js-sdk

[REQUIRED] Describe your environment Operating System version: macOS Big Sur Browser version: Chrome 95 Firebase SDK version: 9 Firebase Product: auth [REQUIRED] Describe the problem Calling signOu...

github.com

 

 

 

4. 느낀 점

리코일을 사용하면서 처음에는 보일러 플레이트가 없는 설정과 사용이 편해서 좋다고 생각했다.

리덕스 툴킷과 리코일을 모두에게서 발생할 수 있는 깊은복사와 관련된 오류여서 더 공부해야겠다.

 

끝.

반응형