Skip to content

Commit de5300b

Browse files
authored
fix: made expo module resolving from workspace root (#2059)
### 💡 Overview Expo sample app cannot launch due to problem of resolving files from `node_modules/expo/virtual/` from workspace root. ### 📝 Implementation notes Update `metro.config.js` so that it resolves metro package from workspace root. 🎫 Ticket: https://linear.app/stream/issue/RN-319/expo-sample-app-not-launching
1 parent a25d9a8 commit de5300b

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

sample-apps/react-native/expo-video-sample/metro.config.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,22 @@ const uniqueModules = dependencyPackageNames.map((packageName) => {
2525
};
2626
});
2727

28+
// Filter out expo from unique modules to avoid blocking expo virtual files
29+
// Expo virtual files are in the workspace root's node_modules and must be accessible
30+
const uniqueModulesFiltered = uniqueModules.filter(
31+
({ packageName }) => packageName !== 'expo',
32+
);
33+
2834
// provide the path for the unique modules
29-
const extraNodeModules = uniqueModules.reduce((acc, item) => {
35+
// Exclude expo from extraNodeModules to allow it to resolve from workspace root
36+
// (needed for Expo virtual files)
37+
const extraNodeModules = uniqueModulesFiltered.reduce((acc, item) => {
3038
acc[item.packageName] = item.modulePath;
3139
return acc;
3240
}, {});
3341

3442
// block the other paths for unique modules from being resolved
35-
const blockList = uniqueModules.map(({ blockPattern }) => blockPattern);
43+
const blockList = uniqueModulesFiltered.map(({ blockPattern }) => blockPattern);
3644

3745
const workspaceRoot = path.resolve(projectRoot, '../../..');
3846

0 commit comments

Comments
 (0)