From 6669cd138e918c6252e7c1dcb4bdfbc673105bad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9=20Arboleda?= Date: Fri, 29 Nov 2019 16:30:25 -0500 Subject: [PATCH] lib: add warning on dynamic import es modules PR-URL: https://github.com/nodejs/node/pull/30720 Reviewed-By: Guy Bedford --- lib/internal/process/esm_loader.js | 6 ++++++ test/es-module/test-esm-dynamic-import.js | 3 +++ 2 files changed, 9 insertions(+) diff --git a/lib/internal/process/esm_loader.js b/lib/internal/process/esm_loader.js index 19099d9cbd58fd..404be77338bfe1 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 8a92ac41edbdfd..1fc22f1d98934a 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}")`));