diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js index 9fd43a28e5b480..e4825a7d3f86b1 100644 --- a/lib/internal/modules/esm/resolve.js +++ b/lib/internal/modules/esm/resolve.js @@ -653,8 +653,11 @@ function packageExportsResolve( const resolveResult = resolvePackageTarget( packageJSONUrl, target, '', packageSubpath, base, false, false, conditions ); - if (resolveResult === null || resolveResult === undefined) + + if (resolveResult == null) { throwExportsNotFound(packageSubpath, packageJSONUrl, base); + } + return resolveResult; } @@ -691,12 +694,19 @@ function packageExportsResolve( if (bestMatch) { const target = exports[bestMatch]; - const resolveResult = resolvePackageTarget(packageJSONUrl, target, - bestMatchSubpath, bestMatch, - base, true, false, - conditions); - if (resolveResult === null || resolveResult === undefined) + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + bestMatchSubpath, + bestMatch, + base, + true, + false, + conditions); + + if (resolveResult == null) { throwExportsNotFound(packageSubpath, packageJSONUrl, base); + } return resolveResult; } @@ -740,8 +750,9 @@ function packageImportsResolve(name, base, conditions) { const resolveResult = resolvePackageTarget( packageJSONUrl, imports[name], '', name, base, false, true, conditions ); - if (resolveResult !== null && resolveResult !== undefined) + if (resolveResult != null) { return resolveResult.resolved; + } } else { let bestMatch = ''; let bestMatchSubpath; @@ -771,8 +782,9 @@ function packageImportsResolve(name, base, conditions) { bestMatchSubpath, bestMatch, base, true, true, conditions); - if (resolveResult !== null && resolveResult !== undefined) + if (resolveResult != null) { return resolveResult.resolved; + } } } } @@ -875,12 +887,14 @@ function packageResolve(specifier, base, conditions) { } if (packageSubpath === '.') { return { - resolved: legacyMainResolve(packageJSONUrl, - packageConfig, - base), + resolved: legacyMainResolve( + packageJSONUrl, + packageConfig, + base), ...(packageConfig.type !== 'none') && { format: packageConfig.type } }; } + return { resolved: new URL(packageSubpath, packageJSONUrl), ...(packageConfig.type !== 'none') && { format: packageConfig.type } @@ -927,7 +941,8 @@ function shouldBeTreatedAsRelativeOrAbsolutePath(specifier) { function moduleResolve(specifier, base, conditions, preserveSymlinks) { // Order swapped from spec for minor perf gain. // Ok since relative URLs cannot parse as URLs. - let resolved, format; + let resolved; + let format; if (shouldBeTreatedAsRelativeOrAbsolutePath(specifier)) { resolved = new URL(specifier, base); } else if (specifier[0] === '#') { @@ -939,11 +954,15 @@ function moduleResolve(specifier, base, conditions, preserveSymlinks) { ({ resolved, format } = packageResolve(specifier, base, conditions)); } } - if (resolved.protocol !== 'file:') - return { url: resolved }; + if (resolved.protocol !== 'file:') { + return { + url: resolved + }; + } + return { url: finalizeResolution(resolved, base, preserveSymlinks), - ...(format !== undefined && format !== null) && { format: format } + ...(format != null) && { format } }; } @@ -1032,11 +1051,16 @@ function defaultResolve(specifier, context = {}, defaultResolveUnused) { } conditions = getConditionsSet(conditions); - let url, format; + let url; + let format; try { ({ url, format } = - moduleResolve(specifier, parentURL, conditions, - isMain ? preserveSymlinksMain : preserveSymlinks)); + moduleResolve( + specifier, + parentURL, + conditions, + isMain ? preserveSymlinksMain : preserveSymlinks + )); } catch (error) { // Try to give the user a hint of what would have been the // resolved CommonJS module @@ -1066,7 +1090,7 @@ function defaultResolve(specifier, context = {}, defaultResolveUnused) { return { url: `${url}`, - ...(format !== undefined && format !== null) && { format: format } + ...(format != null) && { format } }; }