Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/doc/api
diff options
context:
space:
mode:
authorDenis Zavershinskiy <zaverden@gmail.com>2019-08-30 06:09:08 +0300
committerRuben Bridgewater <ruben@bridgewater.de>2019-09-25 19:20:56 +0300
commitf2217cdafece03bf4a5dd4612f4d3aa9a5fec055 (patch)
treecc55e1e3a555b593cb8e1fa79c64e9fcce774a8d /doc/api
parentbf08c0838443a216118c0d41713be99da75eedd6 (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.md24
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`);
}