module: fix specifier resolution option value

Fixes: https://github.com/nodejs/node/issues/35095

PR-URL: https://github.com/nodejs/node/pull/35098
Reviewed-By: Geoffrey Booth <webmaster@geoffreybooth.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
pull/35098/head
himself65 2020-09-08 15:45:58 +08:00 committed by Rich Trott
parent b7f3e83086
commit 22c52aac6a
5 changed files with 13 additions and 38 deletions

View File

@ -25,7 +25,7 @@ function shouldUseESMLoader(mainPath) {
if (userLoader)
return true;
const esModuleSpecifierResolution =
getOptionValue('--es-module-specifier-resolution');
getOptionValue('--experimental-specifier-resolution');
if (esModuleSpecifierResolution === 'node')
return true;
// Determine the module format of the main

View File

@ -92,20 +92,7 @@ void EnvironmentOptions::CheckOptions(std::vector<std::string>* errors) {
}
}
if (!es_module_specifier_resolution.empty()) {
if (!experimental_specifier_resolution.empty()) {
errors->push_back(
"bad option: cannot use --es-module-specifier-resolution"
" and --experimental-specifier-resolution at the same time");
} else {
experimental_specifier_resolution = es_module_specifier_resolution;
if (experimental_specifier_resolution != "node" &&
experimental_specifier_resolution != "explicit") {
errors->push_back(
"invalid value for --es-module-specifier-resolution");
}
}
} else if (!experimental_specifier_resolution.empty()) {
if (!experimental_specifier_resolution.empty()) {
if (experimental_specifier_resolution != "node" &&
experimental_specifier_resolution != "explicit") {
errors->push_back(
@ -368,10 +355,8 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
"either 'explicit' (default) or 'node'",
&EnvironmentOptions::experimental_specifier_resolution,
kAllowedInEnvironment);
AddOption("--es-module-specifier-resolution",
"",
&EnvironmentOptions::es_module_specifier_resolution,
kAllowedInEnvironment);
AddAlias("--es-module-specifier-resolution",
"--experimental-specifier-resolution");
AddOption("--no-deprecation",
"silence deprecation warnings",
&EnvironmentOptions::no_deprecation,

View File

@ -105,7 +105,6 @@ class EnvironmentOptions : public Options {
bool experimental_json_modules = false;
bool experimental_modules = false;
std::string experimental_specifier_resolution;
std::string es_module_specifier_resolution;
bool experimental_wasm_modules = false;
bool experimental_import_meta_resolve = false;
std::string module_type;

View File

@ -1,14 +0,0 @@
import { mustCall } from '../common/index.mjs';
import { exec } from 'child_process';
import assert from 'assert';
const expectedError =
'cannot use --es-module-specifier-resolution ' +
'and --experimental-specifier-resolution at the same time';
const flags = '--es-module-specifier-resolution=node ' +
'--experimental-specifier-resolution=node';
exec(`${process.execPath} ${flags}`, mustCall((error) => {
assert(error.message.includes(expectedError));
}));

View File

@ -49,9 +49,14 @@ main().catch(mustNotCall);
'../../fixtures/es-module-specifiers',
item,
);
spawn(process.execPath,
['--es-module-specifier-resolution=node', modulePath],
{ stdio: 'inherit' }).on('exit', (code) => {
assert.strictEqual(code, 0);
[
'--experimental-specifier-resolution',
'--es-module-specifier-resolution'
].forEach((option) => {
spawn(process.execPath,
[`${option}=node`, modulePath],
{ stdio: 'inherit' }).on('exit', (code) => {
assert.strictEqual(code, 0);
});
});
});