summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan José Arboleda <soyjuanarbol@gmail.com>2019-11-29 16:30:25 -0500
committerGuy Bedford <guybedford@gmail.com>2019-12-06 23:07:56 -0500
commit6669cd138e918c6252e7c1dcb4bdfbc673105bad (patch)
tree3485f766a222ba0f96db5743667335aae0027d53
parentaa363c49eadabe45344986476b8388d66cfced37 (diff)
downloadandroid-node-v8-6669cd138e918c6252e7c1dcb4bdfbc673105bad.tar.gz
android-node-v8-6669cd138e918c6252e7c1dcb4bdfbc673105bad.tar.bz2
android-node-v8-6669cd138e918c6252e7c1dcb4bdfbc673105bad.zip
lib: add warning on dynamic import es modules
PR-URL: https://github.com/nodejs/node/pull/30720 Reviewed-By: Guy Bedford <guybedford@gmail.com>
-rw-r--r--lib/internal/process/esm_loader.js6
-rw-r--r--test/es-module/test-esm-dynamic-import.js3
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/internal/process/esm_loader.js b/lib/internal/process/esm_loader.js
index 19099d9cbd..404be77338 100644
--- a/lib/internal/process/esm_loader.js
+++ b/lib/internal/process/esm_loader.js
@@ -24,6 +24,12 @@ exports.initializeImportMetaObject = function(wrap, meta) {
exports.importModuleDynamicallyCallback = async function(wrap, specifier) {
assert(calledInitialize === true || !userLoader);
+ if (!calledInitialize) {
+ process.emitWarning(
+ 'The ESM module loader is experimental.',
+ 'ExperimentalWarning', undefined);
+ calledInitialize = true;
+ }
const { callbackMap } = internalBinding('module_wrap');
if (callbackMap.has(wrap)) {
const { importModuleDynamically } = callbackMap.get(wrap);
diff --git a/test/es-module/test-esm-dynamic-import.js b/test/es-module/test-esm-dynamic-import.js
index 8a92ac41ed..1fc22f1d98 100644
--- a/test/es-module/test-esm-dynamic-import.js
+++ b/test/es-module/test-esm-dynamic-import.js
@@ -42,6 +42,9 @@ function expectFsNamespace(result) {
// For direct use of import expressions inside of CJS or ES modules, including
// via eval, all kinds of specifiers should work without issue.
(function testScriptOrModuleImport() {
+ common.expectWarning('ExperimentalWarning',
+ 'The ESM module loader is experimental.');
+
// Importing another file, both direct & via eval
// expectOkNamespace(import(relativePath));
expectOkNamespace(eval(`import("${relativePath}")`));