Metro bundler 에서 변경사항이 생겼는지 0.72 버전에서 모듈 관련 이슈가 생겼다.
RN 에서 패키지의 자바스크립트 코드가 아닌 typescript source 에서 코드를 읽어오는 경우
(ex: node_modules/package_name/src/index.ts)
해당 ts 파일에서 try/catch 로 모듈 fallback 을 시도하고있으면
// "ts-source-package-1/index.ts"
import { useSomeHook } from "ts-source-package-2";
let FlatList;
try {
FlatList = require('@sendbird/react-native-scrollview-enhancer').FlatList;
} catch {
FlatList = require('react-native').FlatList;
}
const Component = () => {
const data = useSomeHook();
return <FlatList data={data} />
}
해당 파일에서 named import 하고 있는 다른 typescript source 를 참조하는 패키지들이 정상적으로 import 를 하지 못하는 이슈가 있다.
TypeError: 0, _$$_REQUIRE(_dependencyMap[5](...)ts-source-package-2").useSomeHook is not a function (it is undefined)
별도의 단일 파일로 module fallback 을 옮기면 정상적으로 처리가 된다. 🤔