diff --git a/lib/resolve.js b/lib/resolve.js index a1c87f5..a9c308c 100644 --- a/lib/resolve.js +++ b/lib/resolve.js @@ -567,6 +567,11 @@ function resolvePackageTarget( continue } + if (!fileExists(resolveResult)) { + lastException = null + continue + } + return resolveResult } diff --git a/test/core.js b/test/core.js index b37ddb9..c639f39 100644 --- a/test/core.js +++ b/test/core.js @@ -533,6 +533,20 @@ test( process.emitWarning = oldEmitWarning }) + assert.equal( + resolve('package-export-map-array/a', import.meta.url), + new URL('node_modules/package-export-map-array/b.js', import.meta.url) + .href, + 'should be able to resolve to the first entry in an export map array' + ) + + assert.equal( + resolve('package-export-map-array/c', import.meta.url), + new URL('node_modules/package-export-map-array/d.js', import.meta.url) + .href, + 'should be able to resolve to the nth entry in an export map array' + ) + assert.equal( resolve( '#a', diff --git a/test/node_modules/package-export-map-array/b.js b/test/node_modules/package-export-map-array/b.js new file mode 100644 index 0000000..e69de29 diff --git a/test/node_modules/package-export-map-array/d.js b/test/node_modules/package-export-map-array/d.js new file mode 100644 index 0000000..e69de29 diff --git a/test/node_modules/package-export-map-array/package.json b/test/node_modules/package-export-map-array/package.json new file mode 100644 index 0000000..9277fe5 --- /dev/null +++ b/test/node_modules/package-export-map-array/package.json @@ -0,0 +1,12 @@ +{ + "exports": { + "./a": [ + "./b.js", + "./non-existent.js" + ], + "./c": [ + "./non-existent.js", + "./d.js" + ] + } +}