diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js index a321744ab8263c..cc1230648881d8 100644 --- a/lib/internal/modules/esm/resolve.js +++ b/lib/internal/modules/esm/resolve.js @@ -42,6 +42,7 @@ const { ERR_INVALID_MODULE_SPECIFIER, ERR_INVALID_PACKAGE_CONFIG, ERR_INVALID_PACKAGE_TARGET, + ERR_INVALID_URL, ERR_MODULE_NOT_FOUND, ERR_PACKAGE_IMPORT_NOT_DEFINED, ERR_PACKAGE_PATH_NOT_EXPORTED, @@ -846,12 +847,13 @@ function moduleResolve(specifier, base, conditions, preserveSymlinks) { } else if (protocol === 'file:' && specifier[0] === '#') { resolved = packageImportsResolve(specifier, base, conditions); } else { - try { - resolved = new URL(specifier); - } catch (cause) { + const url = URLParse(specifier); + if (url !== null) { + resolved = url; + } else { if (isData && !BuiltinModule.canBeRequiredWithoutScheme(specifier)) { const error = new ERR_UNSUPPORTED_RESOLVE_REQUEST(specifier, base); - setOwnProperty(error, 'cause', cause); + setOwnProperty(error, 'cause', new ERR_INVALID_URL(specifier)); throw error; } resolved = packageResolve(specifier, base, conditions);