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/lib
diff options
context:
space:
mode:
authorJacob Smith <3012099+JakobJingleheimer@users.noreply.github.com>2022-03-29 00:43:15 +0300
committerGitHub <noreply@github.com>2022-03-29 00:43:15 +0300
commit5a927ef0c28cf1889dcb402d7edfc14861c9a450 (patch)
tree119681673b6500d96c9edee4e7187dcf591df091 /lib
parentc6051a08fa5cd9c9d152af64e42e36d690084420 (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.js24
-rw-r--r--lib/internal/modules/esm/resolve.js8
-rw-r--r--lib/internal/process/esm_loader.js3
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() + '/';