From d017f617c22132f26421a7b42d142c57841b39e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Thu, 14 Mar 2019 20:46:14 +0100 Subject: [PATCH] src: do not allow ESM flags without --experimental-modules --- src/node_options.cc | 20 ++++++++++++++++++++ src/node_options.h | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/node_options.cc b/src/node_options.cc index 8f8b108c95..956a4d4c38 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -107,6 +107,26 @@ void EnvironmentOptions::CheckOptions(std::vector* errors) { errors->push_back("--loader requires --experimental-modules be enabled"); } + if (!module_type.empty() && !experimental_modules) { + errors->push_back("--type requires --experimental-modules be enabled"); + } + + if (experimental_json_modules && !experimental_modules) { + errors->push_back("--experimental-json-modules requires " + "--experimental-modules be enabled"); + } + + if (!es_module_specifier_resolution.empty()) { + if (!experimental_modules) { + errors->push_back("--es-module-specifier-resolution requires " + "--experimental-modules be enabled"); + } + if (es_module_specifier_resolution != "node" && + es_module_specifier_resolution != "explicit") { + errors->push_back("invalid value for --es-module-specifier-resolution"); + } + } + if (syntax_check_only && has_eval_string) { errors->push_back("either --check or --eval can be used, not both"); } diff --git a/src/node_options.h b/src/node_options.h index de1f7aea40..4ec28a8e47 100644 --- a/src/node_options.h +++ b/src/node_options.h @@ -87,7 +87,7 @@ class EnvironmentOptions : public Options { bool abort_on_uncaught_exception = false; bool experimental_json_modules = false; bool experimental_modules = false; - std::string es_module_specifier_resolution = "explicit"; + std::string es_module_specifier_resolution; std::string module_type; std::string experimental_policy; bool experimental_repl_await = false;