diff --git a/packages/metro-resolver/src/utils/isSubpathDefinedInExportsLike.js b/packages/metro-resolver/src/utils/isSubpathDefinedInExportsLike.js index a0f7086ecf..754ac53d6c 100644 --- a/packages/metro-resolver/src/utils/isSubpathDefinedInExportsLike.js +++ b/packages/metro-resolver/src/utils/isSubpathDefinedInExportsLike.js @@ -29,7 +29,6 @@ export function isSubpathDefinedInExportsLike( // Attempt to match after expanding any subpath pattern keys for (const key of exportsLikeMap.keys()) { if ( - key.split('*').length === 2 && matchSubpathPattern(key, subpath) != null ) { return true; diff --git a/packages/metro-resolver/src/utils/matchSubpathPattern.js b/packages/metro-resolver/src/utils/matchSubpathPattern.js index 80ce1d6156..6aa1b1b160 100644 --- a/packages/metro-resolver/src/utils/matchSubpathPattern.js +++ b/packages/metro-resolver/src/utils/matchSubpathPattern.js @@ -19,7 +19,12 @@ export function matchSubpathPattern( subpathPattern: string, subpath: string, ): string | null { - const [patternBase, patternTrailer] = subpathPattern.split('*'); + const wildcardIndex = subpathPattern.indexOf('*'); + if (wildcardIndex === -1 || subpathPattern.indexOf('*', wildcardIndex + 1) !== -1) { + return null; + } + const patternBase = subpathPattern.substring(0, wildcardIndex); + const patternTrailer = subpathPattern.substring(wildcardIndex + 1); if ( subpath.startsWith(patternBase) &&