diff options
author | Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com> | 2022-03-29 00:43:15 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-29 00:43:15 +0300 |
commit | 5a927ef0c28cf1889dcb402d7edfc14861c9a450 (patch) | |
tree | 119681673b6500d96c9edee4e7187dcf591df091 /lib | |
parent | c6051a08fa5cd9c9d152af64e42e36d690084420 (diff) |
esm: emit experimental warnings in common place
PR-URL: https://github.com/nodejs/node/pull/42314
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/internal/modules/esm/loader.js | 24 | ||||
-rw-r--r-- | lib/internal/modules/esm/resolve.js | 8 | ||||
-rw-r--r-- | lib/internal/process/esm_loader.js | 3 |
3 files changed, 24 insertions, 11 deletions
diff --git a/lib/internal/modules/esm/loader.js b/lib/internal/modules/esm/loader.js index 16b832527f7..0dccfebbd4f 100644 --- a/lib/internal/modules/esm/loader.js +++ b/lib/internal/modules/esm/loader.js @@ -31,6 +31,7 @@ const { ERR_UNKNOWN_MODULE_FORMAT } = require('internal/errors').codes; const { pathToFileURL, isURLInstance, URL } = require('internal/url'); +const { emitExperimentalWarning } = require('internal/util'); const { isAnyArrayBuffer, isArrayBufferView, @@ -53,6 +54,13 @@ const { fetchModule, } = require('internal/modules/esm/fetch_module'); + +/** + * Prevent the specifier resolution warning from being printed twice + */ +let emittedSpecifierResolutionWarning = false; + + /** * An ESMLoader instance is used as the main entry point for loading ES modules. * Currently, this is a singleton -- there is only one used for loading @@ -107,6 +115,22 @@ class ESMLoader { */ translators = translators; + constructor() { + if (getOptionValue('--experimental-loader')) { + emitExperimentalWarning('Custom ESM Loaders'); + } + if (getOptionValue('--experimental-network-imports')) { + emitExperimentalWarning('Network Imports'); + } + if (getOptionValue('--experimental-specifier-resolution') === 'node' && !emittedSpecifierResolutionWarning) { + process.emitWarning( + 'The Node.js specifier resolution flag is experimental. It could change or be removed at any time.', + 'ExperimentalWarning' + ); + emittedSpecifierResolutionWarning = true; + } + } + static pluckHooks({ globalPreload, resolve, diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js index 53085f32746..e640947450c 100644 --- a/lib/internal/modules/esm/resolve.js +++ b/lib/internal/modules/esm/resolve.js @@ -364,7 +364,6 @@ function resolveDirectoryEntry(search) { } const encodedSepRegEx = /%2F|%5C/i; -let experimentalSpecifierResolutionWarned = false; /** * @param {URL} resolved * @param {string | URL | undefined} base @@ -379,13 +378,6 @@ function finalizeResolution(resolved, base, preserveSymlinks) { let path = fileURLToPath(resolved); if (getOptionValue('--experimental-specifier-resolution') === 'node') { - if (!experimentalSpecifierResolutionWarned) { - process.emitWarning( - 'The Node.js specifier resolution flag is experimental. It could change or be removed at any time.', - 'ExperimentalWarning'); - experimentalSpecifierResolutionWarned = true; - } - let file = resolveExtensionsWithTryExactName(resolved); // Directory diff --git a/lib/internal/process/esm_loader.js b/lib/internal/process/esm_loader.js index 73385a85b4e..20021134ce4 100644 --- a/lib/internal/process/esm_loader.js +++ b/lib/internal/process/esm_loader.js @@ -55,9 +55,6 @@ async function initializeLoader() { if (!customLoaders.length) return; - const { emitExperimentalWarning } = require('internal/util'); - emitExperimentalWarning('--experimental-loader'); - let cwd; try { cwd = process.cwd() + '/'; |