Firebase Auth 에뮬레이터의 간헐적 'auth/emulator-config-failed' 오류 해결하기
Firebase Auth 에뮬레이터를 사용할 때 간헐적으로 'auth/emulator-config-failed' 오류가 발생하는 경우가 있습니다. 이 글에서는 이 문제의 원인과 해결 방법을 상세히 알아보겠습니다.
1. 문제 상황
Firebase Auth 에뮬레이터를 연결할 때 다음과 같은 오류가 간헐적으로 발생합니다:
Uncaught FirebaseError: Firebase: Error (auth/emulator-config-failed).
2. 주요 원인
- 에뮬레이터 연결 시점 문제
- 네트워크 요청 타이밍 이슈
- React.StrictMode로 인한 중복 초기화
- localhost 대신 IP 주소 사용 필요
3. 해결 방법
3.1 localhost 대신 IP 주소 사용
에뮬레이터 연결 시 'localhost' 대신 '127.0.0.1'을 사용합니다:
connectAuthEmulator(auth, 'http://127.0.0.1:9099', { disableWarnings: true });
3.2 에뮬레이터 연결 시점 조정
Firebase 초기화 직후에 동기적으로 에뮬레이터를 연결합니다:
const app = initializeApp(config);
const auth = getAuth(app);
if (process.env.NODE_ENV === 'development') {
connectAuthEmulator(auth, 'http://127.0.0.1:9099', { disableWarnings: true });
}
3.3 React.StrictMode 비활성화 고려
개발 중 문제가 지속될 경우 일시적으로 React.StrictMode를 비활성화해 봅니다.
3.4 에뮬레이터 연결 상태 확인
이미 에뮬레이터에 연결되어 있는지 확인 후 연결을 시도합니다:
if (!auth.config.emulator) {
connectAuthEmulator(auth, 'http://127.0.0.1:9099', { disableWarnings: true });
}
4. 추가 팁
- Firebase 설정을 앱 생명주기 초기에 수행합니다.
- 에뮬레이터 연결 전에 네트워크 요청이 발생하지 않도록 주의합니다.
- React 사용 시, useEffect 훅 내에서 에뮬레이터 연결을 수행합니다.
결론
Firebase Auth 에뮬레이터의 'auth/emulator-config-failed' 오류는 주로 연결 시점과 네트워크 요청 타이밍 문제로 발생합니다. IP 주소 사용, 적절한 연결 시점 선택, 그리고 React.StrictMode 고려 등의 방법으로 대부분의 경우 해결할 수 있습니다. 문제가 지속될 경우, Firebase 설정 전반을 검토하고 필요한 경우 Firebase 지원 팀에 문의하는 것이 좋습니다.