React-Native의 드로어 네비게이터를 스터디하던 중 예상치 못한 에러를 만났습니다.
react-navigation/drawer 를 설치하려면 해당 라이브러리와 더불어 여러 종속적인 라이브러리를 함께 설치해야 합니다.
1. yarn add @react-navigation/drawer
2. yarn add react-native-gesture-handler
3. yarn add react-native-reanimated
여기서 1번은 위 이미지와 같이 Drawer Navigator의 라이브러리,
2번은 드로우 네이게이터에서 사용자의 제스처를 인식하기 위해 내부적으로 사용하는 라이브러러,
3번은 리액트 네이티브에 내장된 애니메이션 효과보다 더욱 개선된 애니메이션 효과를 구현하는 라이브러리 입니다.
설치 이후, 아래와 같이 Drawer Navigator를 선언하여 쓰면 되는데요,
import {createDrawerNavigator} from '@react-navigation/drawer';
const Drawer = createDrawerNavigator();
그런데 아래와 같은 에러 결과와 함께
TypeError: Cannot read property 'createDrawerNavigator' of undefined
와 같은 에러 로그가 찍힘을 볼 수 있습니다.
이 에러는
babel.config.js
파일 내에plugins: ['react-native-reanimated/plugin'],
을 추가해주면 해결됩니다.module.exports = { presets: ['module:metro-react-native-babel-preset'], plugins: ['react-native-reanimated/plugin'], };
추가로 위 에러를 해결하기 위해 스택오버플로우나 여러 커뮤니티에서 관련 사례를 서치 해보았는데
아래와 같은 해결방안과 파생된 다른 에러 이슈가 있었습니다.
react-native-reanimated@next
설치
WARN Sending 'onReanimatedPropsChange' with no listeners registered.
react-native-reanimated@2.8.0
다운그레이드 설치