Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions lib/internal/process/esm_loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ exports.initializeImportMetaObject = function(wrap, meta) {

exports.importModuleDynamicallyCallback = async function(wrap, specifier) {
assert(calledInitialize === true || !userLoader);
process.emitWarning(
'The ESM module loader is experimental.',
'ExperimentalWarning', undefined);
Comment thread
juanarbol marked this conversation as resolved.
Outdated
const { callbackMap } = internalBinding('module_wrap');
if (callbackMap.has(wrap)) {
const { importModuleDynamically } = callbackMap.get(wrap);
Expand Down
8 changes: 8 additions & 0 deletions test/es-module/test-esm-dynamic-import.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,14 @@ 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() {
// Warning should be emitted 9 times, bellow we're importing 9 ES modules.
const IMPORTED_DYNAMICALLY = 9;
process.on('warning', common.mustCall(({ name, code, message }) => {
assert.strictEqual(code, undefined);
assert.strictEqual(message, 'The ESM module loader is experimental.');
assert.strictEqual(name, 'ExperimentalWarning');
}, IMPORTED_DYNAMICALLY));

// Importing another file, both direct & via eval
// expectOkNamespace(import(relativePath));
expectOkNamespace(eval(`import("${relativePath}")`));
Expand Down