From 9ec497a1c874ebefa2c57b2680b11f6e25c85df8 Mon Sep 17 00:00:00 2001 From: Guy Bedford Date: Tue, 18 Feb 2020 12:43:10 +0200 Subject: [PATCH 1/3] module: disable conditional exports, self resolve warnings PR-URL: https://github.com/nodejs/node/pull/31845 Reviewed-By: Jan Krems Reviewed-By: Geoffrey Booth --- lib/internal/modules/cjs/loader.js | 4 +-- src/module_wrap.cc | 3 --- test/es-module/test-esm-nowarn-exports.mjs | 25 +++++++++++++++++++ .../es-modules/import-resolve-exports.mjs | 10 ++++++++ 4 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 test/es-module/test-esm-nowarn-exports.mjs create mode 100644 test/fixtures/es-modules/import-resolve-exports.mjs diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index f6f550d7335a60..0a359a3d8973bc 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -49,7 +49,7 @@ const { rekeySourceMap } = require('internal/source_map/source_map_cache'); const { pathToFileURL, fileURLToPath, URL } = require('internal/url'); -const { deprecate, emitExperimentalWarning } = require('internal/util'); +const { deprecate } = require('internal/util'); const vm = require('vm'); const assert = require('internal/assert'); const fs = require('fs'); @@ -579,7 +579,6 @@ function resolveExportsTarget(baseUrl, target, subpath, mappingKey) { case 'node': case 'require': try { - emitExperimentalWarning('Conditional exports'); return resolveExportsTarget(baseUrl, target[p], subpath, mappingKey); } catch (e) { @@ -934,7 +933,6 @@ Module._resolveFilename = function(request, parent, isMain, options) { if (parent && parent.filename) { const filename = trySelf(parent.filename, request); if (filename) { - emitExperimentalWarning('Package name self resolution'); const cacheKey = request + '\x00' + (paths.length === 1 ? paths[0] : paths.join('\x00')); Module._pathCache[cacheKey] = filename; diff --git a/src/module_wrap.cc b/src/module_wrap.cc index c25edd9a28a964..5100c663e6840a 100644 --- a/src/module_wrap.cc +++ b/src/module_wrap.cc @@ -1047,7 +1047,6 @@ Maybe ResolveExportsTarget(Environment* env, return Nothing(); } CHECK(!try_catch.HasCaught()); - ProcessEmitExperimentalWarning(env, "Conditional exports"); return resolved; } } else if (key_str == "default") { @@ -1068,7 +1067,6 @@ Maybe ResolveExportsTarget(Environment* env, return Nothing(); } CHECK(!try_catch.HasCaught()); - ProcessEmitExperimentalWarning(env, "Conditional exports"); return resolved; } } @@ -1284,7 +1282,6 @@ Maybe PackageResolve(Environment* env, } } if (found_pjson && pcfg->name == pkg_name && !pcfg->exports.IsEmpty()) { - ProcessEmitExperimentalWarning(env, "Package name self resolution"); if (pkg_subpath == "./") { return Just(URL("./", pjson_url)); } else if (!pkg_subpath.length()) { diff --git a/test/es-module/test-esm-nowarn-exports.mjs b/test/es-module/test-esm-nowarn-exports.mjs new file mode 100644 index 00000000000000..13bfaf9b4f3527 --- /dev/null +++ b/test/es-module/test-esm-nowarn-exports.mjs @@ -0,0 +1,25 @@ +import '../common/index.mjs'; +import { path } from '../common/fixtures.mjs'; +import { strictEqual, ok } from 'assert'; +import { spawn } from 'child_process'; + +const child = spawn(process.execPath, [ + '--experimental-import-meta-resolve', + path('/es-modules/import-resolve-exports.mjs') +]); + +let stderr = ''; +child.stderr.setEncoding('utf8'); +child.stderr.on('data', (data) => { + stderr += data; +}); +child.on('close', (code, signal) => { + strictEqual(code, 0); + strictEqual(signal, null); + ok(stderr.toString().includes( + 'ExperimentalWarning: The ESM module loader is experimental' + )); + ok(!stderr.toString().includes( + 'ExperimentalWarning: Conditional exports' + )); +}); diff --git a/test/fixtures/es-modules/import-resolve-exports.mjs b/test/fixtures/es-modules/import-resolve-exports.mjs new file mode 100644 index 00000000000000..0bbce4fbc5efc0 --- /dev/null +++ b/test/fixtures/es-modules/import-resolve-exports.mjs @@ -0,0 +1,10 @@ +import { strictEqual } from 'assert'; + +(async () => { + const resolved = await import.meta.resolve('pkgexports-sugar'); + strictEqual(typeof resolved, 'string'); +})() +.catch((e) => { + console.error(e); + process.exit(1); +}); From eba75466d8d431471af54160a7b280666dd9a691 Mon Sep 17 00:00:00 2001 From: Guy Bedford Date: Mon, 20 Apr 2020 17:44:10 -0700 Subject: [PATCH 2/3] backport fixes --- test/es-module/test-esm-nowarn-exports.mjs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/es-module/test-esm-nowarn-exports.mjs b/test/es-module/test-esm-nowarn-exports.mjs index 13bfaf9b4f3527..b4de6d967b3b21 100644 --- a/test/es-module/test-esm-nowarn-exports.mjs +++ b/test/es-module/test-esm-nowarn-exports.mjs @@ -1,9 +1,11 @@ +// Flags: --experimental-modules import '../common/index.mjs'; import { path } from '../common/fixtures.mjs'; import { strictEqual, ok } from 'assert'; import { spawn } from 'child_process'; const child = spawn(process.execPath, [ + '--experimental-modules', '--experimental-import-meta-resolve', path('/es-modules/import-resolve-exports.mjs') ]); @@ -14,6 +16,7 @@ child.stderr.on('data', (data) => { stderr += data; }); child.on('close', (code, signal) => { + console.log(stderr); strictEqual(code, 0); strictEqual(signal, null); ok(stderr.toString().includes( From 2538df1d505d422a9d57080fb564413817221e77 Mon Sep 17 00:00:00 2001 From: Guy Bedford Date: Mon, 20 Apr 2020 17:47:24 -0700 Subject: [PATCH 3/3] remove log --- test/es-module/test-esm-nowarn-exports.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/test/es-module/test-esm-nowarn-exports.mjs b/test/es-module/test-esm-nowarn-exports.mjs index b4de6d967b3b21..0c5ae17e764797 100644 --- a/test/es-module/test-esm-nowarn-exports.mjs +++ b/test/es-module/test-esm-nowarn-exports.mjs @@ -16,7 +16,6 @@ child.stderr.on('data', (data) => { stderr += data; }); child.on('close', (code, signal) => { - console.log(stderr); strictEqual(code, 0); strictEqual(signal, null); ok(stderr.toString().includes(