The algorithm to load an ES module specifier is given through the ESM_RESOLVE method below. It returns the resolved URL for a module specifier relative to a parentURL.

    The algorithm to determine the module format of a resolved URL is provided by ESM_FORMAT, which returns the unique module format for any file. The “module” format is returned for an ECMAScript Module, while the “commonjs” format is used to indicate loading through the legacy CommonJS loader. Additional formats such as “addon” can be extended in future updates.

    In the following algorithms, all subroutine errors are propagated as errors of these top-level routines unless stated otherwise.

    defaultConditions is the conditional environment name array, ["node", "import"].

    The resolver can throw the following errors:

    • Invalid Module Specifier: Module specifier is an invalid URL, package name or package subpath specifier.
    • Invalid Package Configuration: package.json configuration is invalid or contains an invalid configuration.
    • Invalid Package Target: Package exports or imports define a target module for the package that is an invalid type or string target.
    • Package Path Not Exported: Package exports do not define or permit a target subpath in the package for the given module.
    • Package Import Not Defined: Package imports do not define the specifier.
    • Module Not Found: The package or module requested does not exist.