diff options
author | Denis Zavershinskiy <zaverden@gmail.com> | 2019-08-30 06:09:08 +0300 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2019-09-25 19:20:56 +0300 |
commit | f2217cdafece03bf4a5dd4612f4d3aa9a5fec055 (patch) | |
tree | cc55e1e3a555b593cb8e1fa79c64e9fcce774a8d /doc/api | |
parent | bf08c0838443a216118c0d41713be99da75eedd6 (diff) |
doc: update experimental loader hooks example code
It fix 2 issues in provided Loader hooks examples:
1. Original ``new URL(`${process.cwd()}/`, 'file://');``
is not cross-platform, it gives wrong URL on windows
2. Based on `CHECK` in ModuleWrap::Resolve (node 12.9.1,
https://github.com/nodejs/node/blob/v12.9.1/src/module_wrap.cc#L1132)
the 2nd parameter should be a `string`, not an `URL` object
PR-URL: https://github.com/nodejs/node/pull/29373
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Diffstat (limited to 'doc/api')
-rw-r--r-- | doc/api/esm.md | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/doc/api/esm.md b/doc/api/esm.md index 20f4330acc9..75547159d3a 100644 --- a/doc/api/esm.md +++ b/doc/api/esm.md @@ -573,8 +573,14 @@ The resolve hook returns the resolved file URL and module format for a given module specifier and parent file URL: ```js -const baseURL = new URL(`${process.cwd()}/`, 'file://'); - +import { URL, pathToFileURL } from 'url'; +const baseURL = pathToFileURL(process.cwd()).href; + +/** + * @param {string} specifier + * @param {string} parentModuleURL + * @param {function} defaultResolver + */ export async function resolve(specifier, parentModuleURL = baseURL, defaultResolver) { @@ -612,13 +618,21 @@ be written: import path from 'path'; import process from 'process'; import Module from 'module'; +import { URL, pathToFileURL } from 'url'; const builtins = Module.builtinModules; const JS_EXTENSIONS = new Set(['.js', '.mjs']); -const baseURL = new URL(`${process.cwd()}/`, 'file://'); +const baseURL = pathToFileURL(process.cwd()).href; -export function resolve(specifier, parentModuleURL = baseURL, defaultResolve) { +/** + * @param {string} specifier + * @param {string} parentModuleURL + * @param {function} defaultResolver + */ +export async function resolve(specifier, + parentModuleURL = baseURL, + defaultResolver) { if (builtins.includes(specifier)) { return { url: specifier, @@ -627,7 +641,7 @@ export function resolve(specifier, parentModuleURL = baseURL, defaultResolve) { } if (/^\.{0,2}[/]/.test(specifier) !== true && !specifier.startsWith('file:')) { // For node_modules support: - // return defaultResolve(specifier, parentModuleURL); + // return defaultResolver(specifier, parentModuleURL); throw new Error( `imports must begin with '/', './', or '../'; '${specifier}' does not`); } |